タイマーの仕組みを考えていましたが、私が完全に理解していないことがあります。
Timer
は、時間が経過すると呼び出されるイベントを使用します。これは、クロックを制御する(またはクロックによって制御される)OSイベントによって引き起こされると想定しています。
しかし、どのスレッドがそのイベントを捕捉するのかは分かりません。タイマーのコールバックスレッド
オブジェクトには独自のスレッドがありますか?
イベントは、タイマーオブジェクトを作成したスレッドで呼び出されますか?
EDIT:
そしてSystem.Timers.Timer
とSystem.Windows.Forms.Timer
間の側面に差がありますか?
ちょうどブートに追加する:前者の場合は、 'state'オブジェクトをシンクオブジェクトとして指定するだけです。 .NET 4は 'WPF 'の' ISynchronizeInvoke'とは異なり 'Dispatcher'を使いますが、これはまったく同じ方法で使うことができますが、前述の方法で' System.Timers.Timer'と一緒に使うことはできません。 –
スレッドプールを使用する場合、次のトリガーは別のスレッドにありますか?以前は同じスレッドだったのでしょうか?繰り返しますが、タイマーには専用のスレッドがありますか? –
@Yochai:毎回別のスレッドで発生する可能性があります(もちろん、同じものを再利用することもできます)。私はスレッドがタイマーのために "予約されている"とは思わない。 –