Что произойдет, когда я отключу таймер?

Я смущен, что произойдет, когда я отключу таймер. Завершит ли он процесс, а затем отключит его или сразу отключит, не завершив процесс?

например

Private Sub MyTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyTimer.Tick MyTimer.Enabled = False getMessage() MyTimer.Enabled = True
End Sub

Я хочу запустить getMessage из другого места, поэтому мне нужно отключить таймер в течение этого времени, чтобы быть уверенным в том, чтобы не переопределять что-либо, а также перед отключением таймера он должен завершить этот код функции.

3 ответа

Прочтите эту статью MSDN о свойстве Timer Enabled. Говорится

Вызов метода "Старт" аналогичен настройке "Включено" на "Истина". Аналогично, вызов метода Stop аналогичен настройке Enabled на false.

Поэтому, отвечая на ваш вопрос, он остановит Timer когда вы его отключите.


Свойство Enabled только контролирует, когда будет запущено следующее событие. Три строки выше будут делать то, что вы объясните: вызовите getMessage и запустите таймер после возврата вызова.


Если ваш код в настоящее время выполняет MyTimer_Tick и вы отключите таймер, он, конечно же, закончит MyTimer_Tick. Только следующий вызов MyTimer_Tick не произойдет. После отключения таймера вам придется ждать, если ваш обратный вызов в данный момент выполняется. Вы можете выполнять ожидание, используя Thread.Sleep() или использовать AutoResetEvent.

licensed under cc by-sa 3.0 with attribution.