スポンサーリンク

.NET Fx 49.7日問題

http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=32207
基本的にはSystem.Threading.Timerクラスで、49.7日目というかTickCountが0に戻る時に予期しないタイマイベントが発生するという現象です。System.Timer.TimerやWindows.Formのタイマーもこのクラスを使っていると思われるので、同様の問題が発生しそうです。
上のGDNJにKBのリンクを書きましたが、一応ホットフィックスも現状出ている状態です。
プラント管理アプリケーションなんて物を書いている身分で書かせてもらうとかなりこれは痛いバグです。
プラント管理アプリケーションは周期的にOPCや独自のドライバからセンサが拾ったプラントのデータを入手して、何らかの演算・処理を行うことが基本的な処理です。つまり、タイマイベントによる処理がほとんどの処理で行われるので、タイマ動作の健全性が重要基本的な事項で、これが崩れてしまうのは大問題です。
この問題自体は回避策がとれるとは思いますが、大きな問題だと僕は思うので、ホットフィックスをもう少し入手しやすくするといった方法がとられても良いような気がします。
特にOPCのプラットフォームを.NETに移行させたいのであれば、タイマの重要性は関係各位も十分認識されておられるでしょうから、改善をお願いしたいです。

コメント

  1. 安藤@大分 より:

    なんで64bitの高分解能タイマを使わないんですかねえ。
    私がかかわったコードはすべてGetTickCount()を64bitで
    処理するように置き換えてしまいましたが…

  2. 管理人 より:

    >なんで64bitの高分解能タイマを使わないんですかねえ。
    それは謎というか、そこまで必要ないと判断したのかもしれないですね。
    あえて自分で作れって言われいる気がしないでもないですが。
    Longhornと言うかWinFXでのファンダメンタルサービスに期待していたのはこういったことだったりするんですけどね。
    GDNJでの議論もあらぬ方向に進んでしまいました。

  3. 管理人 より:
  4. 管理人 より:
タイトルとURLをコピーしました