複数のタイマーと複数のスレッドの違いは何ですか?Windowsサービスとタイマー - 別々のプロセス?
私はバックグラウンドで動作するWindowsサービスを持っています。 initにロードされるデータベースには、約10の「サイト」があります。各サイトは独自のTimerオブジェクトで初期化され、Timerは各サイトのインターバルでコードを実行します。実行されるコードは、メインサービスクラスの静的メソッドからのものです。
2台のタイマーを同時に実行しているとどうなりますか?彼らは同じプロセスで実行していますか? 2番目のタイマーは、最初のタイマーがメソッドを終了するのを待たなければ入力できませんか?心配するロックや競争条件はありますか?
洞察をいただきありがとうございます。
雅、新しいタイマーを作成すると ...私は...ないプロセス をスレッドを意味...そう、「自分自身のスレッドでタイマー...」に関する部分は、問題の核心になり、 .NETは自動的に独自のスレッドでそれらを実行しますか? binarycoderによると、それらはデフォルトで共有スレッドプールで実行され、明示的にそれらをスレッドする必要はありません。 しかし、これは、明示的なスレッドが作成されていない場合でも、同時にアクセスしたくないコードをロックする必要があることを意味します。 –
正確に - ほとんどの.Netタイマーは、スレッドプールから独自のスレッドで実行され、一度は独自のスレッドで明示的または暗黙的に実行されます。ロックなどに関しては同じ注意が必要です。 – Tetraneutron