Es werden immer öfter Fragen zu Threads in VB.NET gestellt. Ralf_oop hat hierzu im Forum diesen interessanten Beitrag mit grundlegenden Information zu Verwendung von Threads erstellt, der nicht verloren gehen sollte: Als erstes sollte man eine Prozedur haben, die relativ lange braucht, um seine Aufgabe auszuführen (also relativ rechenintensiv). Hier eine sehr sinnvolle Version Sub Zählen() Dim i As Integer For i = 1 To 10000 Console.WriteLine("Hallo Welt zum {0}-ten Mal", i) Next End Sub Zweitens muss eine Instanz der Thread-Klasse mit der Prozedur, die ausgeführt werden soll, erstellt werden: Dim Thread As New Threading.Thread(AddressOf Zählen) Jetzt kann man den Thread starten: Thread.Start() Beendet werden kann der Thread mit Abort(). Dies löst eine ThreadAbortException aus. Damit wird signalisiert, dass der Thread beendet werden soll. Diese Exception kann abgefangen werden, um evtl. abschließende Aufgaben (z.B. eine Datei schließen) noch auszuführen. Hier ein kleines Beispiel: Shared Sub Zählen() Dim i As Integer Try For i = 1 To 10000 Console.WriteLine("Hallo Welt zum {0}-ten mal.", i) Next Catch ex As ThreadAbortException ' hier Aufräumarbeiten einfügen Return End Try End Sub Shared Sub main() Dim Thread As New Threading.Thread(AddressOf Zählen) Thread.Start() ' irgendwelche Aufgaben, die den Thread beenden wollen Thread.Abort() ' wenn man jetzt den Thread wieder starten möchte, wird eine Exception ausgelöst End Sub Threads kann man mit Suspend() anhalten. Allerdings wird der Thread nicht sofort angehalten, sondern erst, wenn ein sogenannter sicherer Punkt erreicht ist. Dieser wird vom .NET Framework festgelegt. Um einen Thread wieder auszuführen verwendet man die Resume()-Methode. Mit Sleep() kann der Thread für einen bestimmten Zeitraum (in Millisekunden) angehalten werden. ' Thread für eine Sekunde anhalten Thread.Sleep(1000) Mit Sleep(0) kann man übrigens ein Umschalten zwischen den Threads erreichen. Falls man auf das Ende eines anderen Threads warten will, kann dies mit der Join-Methode erreicht werden. Denkbar wäre dies, wenn ein Thread Daten liest und der Hauptthread solange wartet, bis alle Daten gelesen worden sind. Dim Hauptthread As Threading.Thread = Threading.Thread.CurrentThread Threads haben Eigenschaften, wovon die folgenden am Wichtigsten sind:
Dies wären die Grundlagen zum Thema Threading. Diese Seite wurde bereits 64.544 mal aufgerufen. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Buchempfehlung Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||||||||||||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |