2008-09-21 11 views

Antwort

14

VB6 ist keine wirklich gute Umgebung für Multi-Thread-Anwendungen. Es gibt keine Standard-Unterstützung, Sie müssen sich in die Standardfunktionen WinAPI einarbeiten. Werfen Sie einen Blick auf diese Artikel, die ganz eine umfassende Probe stellt:

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

9

Bei mehreren Projekten, die ich mehrere Prozesse asynchrone Verarbeitung in VB6 implementiert haben. Grundsätzlich ein Worker-Thread innerhalb eines aktiven exe-Projekts, das vom Hauptprozess getrennt ist. Die Worker-EXE kann dann alle erforderlichen Daten übergeben und starten, wodurch ein Ereignis ausgelöst wird, um zu sagen, dass es beendet ist oder Daten für den Hauptprozess vorliegen.

Es ist mehr Ressourcen hungrig (ein zusätzlicher Prozess als ein Thread), aber VB6 läuft in einer Single-Thread-Wohnung und hat keine eingebaute Unterstützung für das Starten neuer Threads.

Wenn Sie wirklich mehrere Threads innerhalb eines Prozesses benötigen, würde ich vorschlagen, mit .net oder VC6 statt VB6 zu suchen.

2

Wenn das Problem, das Sie lösen möchten, eine lange Berechnung ist und Sie die Benutzeroberfläche ansprechend halten möchten, besteht eine Möglichkeit darin, häufig die DoEvents-Funktion innerhalb Ihrer langen Berechnung aufzurufen. Auf diese Weise kann Ihr Programm alle Windows-Meldungen verarbeiten, und die Benutzeroberfläche reagiert auf Benutzerbefehle. Sie können auch eine Schaltfläche "Abbrechen" einrichten, um Ihrem Prozess zu signalisieren, dass er beendet werden muss.

Wenn Sie dies tun, müssen Sie vorsichtig sein, alle Steuerelemente zu deaktivieren, die ein Problem verursachen könnten, z. B. den langen Prozess ein zweites Mal nach dem Start auszuführen.

0

Sie können das Interop Forms Toolkit 2.0 für Multithreading in VB6 verwenden. Mit dem Toolkit können Sie die Vorteile von .NET-Funktionen nutzen, ohne auf ein Upgrade-Pat gezwungen zu werden. Daher können Sie auch .NET-Benutzersteuerelemente als ActiveX-Steuerelemente in VB6 verwenden.