2011-12-22 6 views
0

タイマーを無効にすると何が起こるのか混乱しています。プロセスを終了してから無効にするか、プロセスを完了せずにすぐに無効にしますか?例タイマーを無効にするとどうなりますか?

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を実行したいので、私は何かを上書きするためにも、タイマーを無効にする前に、それはその関数のコードを完了する必要がありませんasuredするその時にタイマーを無効にする必要があります。

答えて

1

Read thisTimerEnabledプロパティに関するMSDNの記事を参照してください。状態

開始メソッドを呼び出すことは、有効をtrueに設定することと同じです。同様に、Stopメソッドを呼び出すことは、Enabledをfalseに設定することと同じです。

質問に答えて、無効にするとTimerが停止します。

+0

この機能が5分かかるとします。私はタイマーを無効にするので、この関数が終了するかどうかを完了するために今? – samirprogrammer

+0

'Timer.Tick'イベントを処理している関数を指している場合はそれを返しますが、' Timer'を再起動するまでは呼び出されません。 'getMessage()'関数も 'Timer'から完全に独立しているので終了します。 –

1

Enabledプロパティは、次のイベントが発生するタイミングを制御します。上の3行はあなたが説明することを行います:getMessageを呼び出し、呼び出しが返った後にTimerを開始します。

0

コードが現在MyTimer_Tickを実行していて、タイマーを無効にしている場合は、もちろん終了しますMyTimer_TickMyTimer_Tickへの次回の呼び出しが行われません。 タイマーを無効にした後、コールバックが現在実行されている場合に待機する必要があります。 Thread.Sleep()を使用してビジー状態にするか、AutoResetEventを使用することができます。

関連する問題