2008年6月20日金曜日

IPDaemon のイベントとマルチスレッド

以前あったお問い合わせに、

「IPDaemon をメインフォームではないクラスで別スレッドで動作させているのだが、そのクラスに InvokeThrough してもイベントを受け取れない」

というものがありました。私もちょっと気になったので弊社技術者の回答をチェックしてみたところ、以下のような回答がなされていました。

「IPDaemon は非同期に動作するため、イベントは DoEventS() 呼び出しが行われるまで発生しない。これを解決するには、IPDaemon の DoEvents() をプログラムのループ内で明示的に呼び出すか、タイマーを使って (定期的に) DoEvents() を呼び出すようにすることで解決できる」

ちょっと面倒ではありますが、シングルスレッドでは動作していたプログラムをマルチスレッド化してイベントを受け取れなくなった場合はこれをお試しください。

0 件のコメント: