- PR -

スレッドタイマにて一定間隔で呼び出すメソッド内のDLL関数が実行されない

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-06-04 17:58
MSDN ライブラリは読みました?UI スレッドではコールバック関数が呼び出されないので、System.Windows.Forms.Timer か、System.Timer.Timer を使うように、と書いてあると思うのです。
おいたん
会議室デビュー日: 2008/03/10
投稿数: 15
投稿日時: 2008-06-04 19:26
unibonさん、Jittaさん、ご回答いただきありがとうございます。

Jittaさんの仰るとおりでした。
http://msdn.microsoft.com/ja-jp/library/system.threading.timer.aspx

上記ページの上から4つ目のメモ欄に密かに書かれてますね。
「推奨」というのが曲者ですが。

Forms.Timerを使うとあっさり動いてしまいました。
ただ、Forms.Timerですと精度の上限が55msのようですので、
System.Timersを使うことにしようと思います。

※ちなみにですが、スレッドタイマで実行する関数を、DLL関数から
 別途用意した関数(単純なビット演算など)と置き換えて
 実行させると、問題なく動いたりします。このダミーを.NET関数と
 しても同様に問題なく動作します。この辺に「推奨」とされている
 曖昧さが表れていそうです。

前述のリンクだけを参照したのがまずかったですね。
やはりトラぶったときはしっかりMSDNに目を通すべき、と
痛感しました。猛省です。

 ご指摘、ご回答いただきました皆様、ありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)