Поддержание работы приложения

Я пытаюсь держать приложение открытым, пока не появится файл. Я использую таймер для проверки FTP-сервера каждые 60 секунд (файл может занять от 13 до 15 минут, прежде чем он появится).

Цикл while работает... но он занимает 50% моего процессора. Пытаюсь придумать другой способ. Я пытался добавить Windows.Form и использовать Application.Run(), но мне было интересно, закроет ли Application.Exit() мое приложение.

    Public Shared Function CheckStatus(ByVal TaskID As String) As Boolean
        _TaskID = TaskID

        'Start Timer to Check Query Status Every 10 Seconds
        CheckStatusTimer.Interval = 10000
        CheckStatusTimer.Enabled = True
        CheckStatusTimer.Start()

        'Wait for Check Query Status To Complete
        While _Status = False

        End While

        CheckStatusTimer.Stop()
        CheckStatusTimer.Enabled = False

        Return _Status
    End Function

Может поместить CheckStatusTimer.Stop() в раздел логики завершения моей подпрограммы CheckStatusTimer_Tick(). Как я могу предотвратить возвращение вызывающей функции до тех пор, пока не будет остановлен таймер?

Спасибо

2 ответа

То, что вы ищете, называется Thread.Sleep():

    While _Status = False
        System.Threading.Thread.Sleep(500)
    End While

Это означает, что поток будет проверять каждые 500 миллисекунд (0,5 с), если статус отличается.

Это то, что вам нужно для работы с заданием в фоновом режиме: http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker%28v=vs.110%29.aspx?cs-save-lang=1&cs-lang=vb

Другое дело, эти строки неверны:

CheckStatusTimer.Stop()
CheckStatusTimer.Enabled = False

Вы повторяете, метод start() и свойство enabled = true выполняют то же самое, также метод stop() и enabled = false

Вот учебник о том, как скачать файл в фоновом режиме

http://msdn.microsoft.com/en-us/library/ms229675%28v=vs.110%29.aspx

Другие вопросы по тегам