タイマーを一時停止してから再開する方法があるかどうか疑問に思っています。
タイマーイベント内または「Chooser()」と呼ばれる別のメソッド内から呼び出すことができる「DoSomething()」メソッドがあります。DoSomething() はタイマーまたは Chooser() から呼び出す必要がありますが、2 回呼び出すことはできません。
問題は、Chooser() が DoSomething() を呼び出すかどうかを決定するのに時間がかかることです。Chooser() が DoSomething() も呼び出すかどうかを決定している間は、DoSomething() を呼び出してはなりません。これにより、DoSomething() が 2 回呼び出されます。
Chooser() が DoSomething() の呼び出しを選択すると、タイマーが無効になります。同様に、タイマーが DoSomething() を呼び出すと、Chooser() 内のコードが無効になります。
Chooser() の開始時にタイマー イベントハンドラーを削除し、Chooser() の最後に再度追加することを考えていました。ただし、Chooser() の実行中にタイマーがイベントをトリガーする可能性があり、イベントが処理されないため、これは機能しません。
DoSomething() を 1 回だけ呼び出したいので、ロックを使用できるとは思いません。
Chooser() の開始時にタイマーを一時停止し、最後に再び開始できれば理想的ですが、その可能性はないと思います。
フラグを追加することもできましたが、もっと良いものがあるかどうか疑問に思っていました。