2008-09-21 7 views

答えて

14

VB6は、マルチスレッドアプリケーションにとって本当に良い環境ではありません。すぐに使えるサポートはありません。標準WinAPIの機能を掘り下げて調べる必要があります。私は複数のプロセスを使用してVB6で非同期処理を実装しているいくつかのプロジェクトで

http://www.freevbcode.com/ShowCode.Asp?ID=1287

9

:かなり包括的なサンプルを提供し、この記事で、見てみましょう。基本的に、メインプロセスとは別のアクティブなexeプロジェクト内にワーカースレッドがある。ワーカーのexeは、必要なデータを渡して開始することができます。終了したと言うイベントを返すか、メインプロセスのデータがあります。

VB6は単一のスレッドアパートメントで実行されており、新しいスレッドを開始するためのサポートは組み込まれていません。

1つのプロセス内に複数のスレッドが必要な場合は、VB6ではなく.netまたはVC6を使用することをお勧めします。

2

あなたが解決しようとしている問題が長い計算で、UIを応答性のあるままにしたい場合は、長い計算でDoEvents関数を頻繁に呼び出すことが考えられます。このようにして、プログラムは任意のWindowsメッセージを処理できるため、UIはユーザーコマンドに応答します。プロセスを終了する必要があることを知らせるために[キャンセル]ボタンを設定することもできます。

このようにすると、長いプロセスを起動した後にもう一度実行するなど、問題を引き起こす可能性のあるコントロールを無効にする必要があります。

0

VB6でInterop Forms Toolkit 2.0をマルチスレッドに使用できます。ツールキット を使用すると、アップグレードを余儀なくされることなく.NETの機能を活用できます。したがって、VB6でActiveXコントロールとして.NETユーザーコントロールを使用することもできます。