.NET の Timer を考えよう(補足)


MSDN Magazine の2004年2月 Alex Calvo 氏の記事を、「.NET の Timer を考えよう」を仕上げたあと(つまり今朝)見つけました。残念です(T_T)

結論のところだけ、翻訳して引用しておきます。

.NET Framework で利用できる3つのタイマークラスをざっくりと見てきたまとめとして、3つのクラスを比較した図7の表をご覧あれ。タイマーを使っているときにあなたの頭 に浮かぶであろう点は、Windows Scheduler (あるいはそれ用の AT コマンドとか)を定期的に走らせれて利用すれば、もっと簡単に解決するかもしれないということだろう。

図7.NET FCLの タイマークラス
System.Windows.
Forms
System.Timers System.Threading
タイマーイベントはどのスレッドで走るか? UI スレッド UI またはワーカースレッド ワーカースレッド
スレッドセーフか? No Yes No
親しんだ、直感的なオブジェクトのモデルか? Yes Yes No
Windows Forms は必要か? Yes No No
周期は一定か? No Yes* Yes*
タイマーイベントがステートオブジェクトに対応しているか No No Yes
1回目のタイマーイベントは時間どおりか? No No Yes
クラスが継承に対応しているか? Yes Yes No
*残りシステムリソースの影響を受けるか?(たとえば、ワーカースレッド)

これを読むと System.Timers.Timer を俄然使いたくありますね。でも、UIスレッドで走らせればUIが忙しいときには、動かないということが起きそうです。その点ももう少しテストが必要そうですね。しかし、いろいろあるのは仕方ないけど、もう少し整理してひとつのクラスでラップしてもいいんじゃないかと思います。そうすれば、タイマーの悩みは減るんじゃないのかな。まぁ、いろいろな事情がありそうだし、難しいのでしょうけど。

引用元 http://msdn.microsoft.com/en-us/magazine/cc164015.aspx

 

印刷
You can skip to the end and leave a response. Pinging is currently not allowed.
Subscribe to RSS Feed Twitter は Ume108 だよ