C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 117 を表示中)
■68865 / )  Re[3]: WndProcの処理を止める方法
□投稿者/ kota (4回)-(2013/11/22(Fri) 23:54:41)
回答ありがとうございます。

工業用のPCにOSはXp(客指定)のOSでリアルタイムモニター
のような使い方をしています。
PCIのGPIB、96IN/48OUTのI/Oボード、A/Dボード、3軸のモーター
コントロールボード、RS−232Cのティーチングペンダント
計測用にマルチポイントシリアルRS-485が3本繋がっています。

GPIB、232C、I/O、A/Dボードはマルチスレッドタイマーで
読み込んで、メインスレッドにチェンジイベントをあげ、
RS-485は別ソフトがメッセージを投げてきます。

自作のタイマーを含めタイマーは200個ほど使っています。
計測器などは非同期でも構わないのですが、モーターコントロールは
同期が必要で、メインスレッドで処理しています。
モーターの動きを監視し目的の場所に移動するまで、メインスレッドは
ループで待ちます。

待っている間、測定器からのメッセージはSenndMessageで待たせます。
ただしI/OからのStopコマンドは受け付ける為に、Doeventで処理を
します。
この時、自分のWndProcのコールバックメソドに処理が入り込み、
抜け出さない(これは想像ですが)症状が起きます。
仕方なく現在は単にsleepを入れています。

そこで一時的にWndProcのコールバックを禁止する方法が無いものか
と質問しました。

現在システムは殆ど完成していますがI/Oの読み込みが少し遅いために、
コードを見直しています。

返信 編集キー/


管理者用

- Child Tree -