ActiveXのスレット間へのアクセスは、ComponentWorks++(Visual C++用のツール)ではサポートされません。



使用ソフトウェア: Measurement Studio Add-ons
使用ソフトウェア・バージョン: 3.0
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア:

問題: C++プログラムでは、一つのスレット内で作成されたユーザインターフェースオブジェクト(例えば、CNiGraphやCNiButton等のオブジェクトのようなユーザインターフェース)は、他のスレッドからアクセスできません。問題は何ですか?

解決策: 弊社のユーザインターフェースクラスは、ActiveXコントロールをもとにしています。ActiveXコントロールとスレットは、完全にプログラムすることは難しいものです。現バージョンのCW++は、このActiveXのスレット間へのアクセスはサポートされておりません。

回避方法:
1.データソケットでの結合ー作業中のスレット内(スレットA)にCNiDataSocketオブジェクトを作成し、ユーザインターフェースオブジェクト(スレットB)をデータソケットで結合し、リアルタイムに集録したデータを表示する。
2.データがユーザインターフェースのスレットの為に用意がととのった時に、スレットAからイベントを生成する。ユーザインターフェースのスレット内でのイベントは、イベントハンドラ(EventHandler)で取り扱います。

(回避方法2での注意; 全てのスレットされたプログラム内では、セマフォ(semaphore)やミューテックス(mutex)等を用いて手動で保護する必要があります。)


関連リンク:

添付:





報告日時: 12/08/2000
最終更新日: 12/07/2000
ドキュメントID: 23LDANEZ