• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:並列動作しない?ActiveX EXE)

ActiveX EXEを使用したプログラムで並列動作しない問題

このQ&Aのポイント
  • ActiveX EXEを使用したプログラムで、並列動作しない問題が発生しています。
  • プログラムは正常に動作していますが、関数実行終了まで戻ってこないため、目的の並列処理ができていません。
  • プログラム構造上、問題があるかどうか確認したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.3

VB6.0ですと単体ではマルチスレッドに対応していないので、マルチスレッドや同期処理を行うには記述難度が跳ね上がりますが・・・ VB.netなら.Net FrameworkにSystem.Threading名前空間に該当クラスライブラリがあり、比較的容易にマルチスレッドや同期処理が記述できるんですが・・・

tmk2z
質問者

補足

アドバイスありがとうございます。 しかし今回は、時間と環境が制限されているため VB6.0しか使用できないんです…

その他の回答 (2)

  • reset_cat
  • ベストアンサー率68% (94/138)
回答No.2

このActiveXは記述からみてVB.netで書かれたんでしょうか? プログラムがかなり断片的にしか書かれてないの推測の範囲でしか回答できませんが、 「ExcelVBAから計測開始関数を複数一斉に呼び出し、その語すべての計測終了を待ってから次の処理を開始する。その計測処理を並列で同時に行いたいが、計測が終了したことがわからないといけない。」 ということをやりたいのでしょうか?? これを実現するにはマルチスレッドと同期処理が必要になると思います。

tmk2z
質問者

お礼

ありがとうございました。 ActiveX側でタイマーイベントを発生させ、マルチスレッドを実現することが出来ました。 ヒントをくださいまし、ありがとうございました。

tmk2z
質問者

補足

ご返答、ありがとうございます。 はい、私のやりたい事は、おっしゃるとおりです。 今朝、マルチスレッドが必要という所まで行き着く事が出来ました。 (ちなみにVB6.0です) タイマーを使用しながら、プログラム組んでいますが 『計測器』に渡す引数が、タイマーイベントに渡すことが出来なくて 困っています。 やはり、タイマーを使用するしかないのでしょうか? 他にマルチスレッドでいい方法があれば、教えてください。 大変お手数で、申し訳ありませんが、よろしくお願いします。

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

VB6の場合で回答します。 VBはループの中ではCPUをつかんでいますので、他に制御を渡しません。 従って、forのようなループで他に制御を渡したい場合は、forの中に Doevents を記述する必要があります。

関連するQ&A