0

System.Timers.Timerを作成する関数を作成し、新しいスレッドで新しい関数を呼び出します。しかし、私の最初の関数はタイマーを待機していません。timer.Start()を呼び出した後、実行を停止して値を返します。

関数が戻る前にこのコードを追加すると、次のようになります。

while(timer.Enabled)
{
Thread.Sleep(2000);
}

タイマー関数が呼び出されることはありません:/

私が間違っていることは何ですか?

4

1 に答える 1

0

MSDN のドキュメントを確認すると、次のメモが表示されます (これが起こっているのではないかと思いますが、追加のコードがないとわかりません)。

イベント処理メソッドは、別のスレッドが Stop メソッドを呼び出したり、Enabled プロパティを false に設定したりすると同時に、あるスレッドで実行される場合があります。これにより、タイマーが停止した後に Elapsed イベントが発生する可能性があります。Stop メソッドのサンプル コードは、この競合状態を回避する 1 つの方法を示しています。

http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx

于 2012-10-16T02:28:50.547 に答える