System.Timers.Timerを作成する関数を作成し、新しいスレッドで新しい関数を呼び出します。しかし、私の最初の関数はタイマーを待機していません。timer.Start()を呼び出した後、実行を停止して値を返します。
関数が戻る前にこのコードを追加すると、次のようになります。
while(timer.Enabled)
{
Thread.Sleep(2000);
}
タイマー関数が呼び出されることはありません:/
私が間違っていることは何ですか?
System.Timers.Timerを作成する関数を作成し、新しいスレッドで新しい関数を呼び出します。しかし、私の最初の関数はタイマーを待機していません。timer.Start()を呼び出した後、実行を停止して値を返します。
関数が戻る前にこのコードを追加すると、次のようになります。
while(timer.Enabled)
{
Thread.Sleep(2000);
}
タイマー関数が呼び出されることはありません:/
私が間違っていることは何ですか?
MSDN のドキュメントを確認すると、次のメモが表示されます (これが起こっているのではないかと思いますが、追加のコードがないとわかりません)。
イベント処理メソッドは、別のスレッドが Stop メソッドを呼び出したり、Enabled プロパティを false に設定したりすると同時に、あるスレッドで実行される場合があります。これにより、タイマーが停止した後に Elapsed イベントが発生する可能性があります。Stop メソッドのサンプル コードは、この競合状態を回避する 1 つの方法を示しています。
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx