Поддержание работы приложения
Я пытаюсь держать приложение открытым, пока не появится файл. Я использую таймер для проверки 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