15

VisualBasic6.0でマルチスレッドを実装する方法。誰かが例を挙げてくれるといいですね。

4

5 に答える 5

14

VB6は、マルチスレッドアプリケーションにとって本当に良い環境ではありません。すぐに使用できるサポートはありません。標準のWinAPI関数を詳しく調べる必要があります。非常に包括的なサンプルを提供するこの記事をご覧ください。

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

于 2008-09-21T01:33:04.053 に答える
9

いくつかのプロジェクトで、複数のプロセスを使用して VB6 で非同期処理を実装しました。基本的に、メイン プロセスとは別のアクティブな exe プロジェクト内にワーカー スレッドがあります。その後、worker exe に必要なデータを渡して開始し、終了またはメイン プロセス用のデータがあることを示すイベントを発生させます。

それはより多くのリソースを消費します (スレッドではなく余分なプロセス) が、VB6 は単一のスレッド化されたアパートメントで実行されており、新しいスレッドを開始するためのサポートが組み込まれていません。

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

于 2008-09-21T01:34:37.997 に答える
2

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

これを行う場合は、長いプロセスを開始後にもう一度実行するなど、問題を引き起こす可能性のあるコントロールを無効にするように注意する必要があります。

于 2008-10-20T19:00:39.423 に答える
0

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

于 2013-01-23T11:26:53.070 に答える