vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Grundlagen des Threading 
Autor: Moderatorralf_oop (Moderator)
Datum: 28.08.04 19:18

Da öfters Fragen über das Threading gestellt wurden, hier die grundlegenden Informationen zur Verwendung von Threads.

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

Zweitesmuss man 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, das 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äumarbieten 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 so

genannten sicherer Punkt erreicht ist. Dieser wird vom .NET Framework festgelegt. Um eine Thread wieder auszuführen verwendet

man die Resume()-Methode. Mit Sleep() kann man den Thread für einen bestimmten Zeitraum (in Millisekunden) angehalten werden.

' Thread für eine Sekunden anhalten
Thread.Sleep(1000)
Mit Slepp(0) kann man übrigens ein Umschalten zwischen den Thread erreichen.

Falls man auf das Ende eines anderen Threads warten will, kann man dies mit der Join-Methode erreicht werden. Denkbar wäre

dies, wenn ein Thread Daten ließt und der Hauptthread solange wartet, bis alle Daten gelesen worden.

Um auf den aktuellen Thread zuzugreifen, gibt es die CurrentThread-Eigenschaft der Thread-Klasse, die ein Thread-Objekt

zurückgibt.

Dim Hauptthread As Threading.Thread = Threading.Thread.CurrentThread
Threads haben Eigenschaften, wovon die folgenden am wichtigsten sind:

IsBackground = Gibt an, ob der Thread ein Hintergrundthread ist. Ein noch laufender Thread verhindert normalerweise, dass ein

Programm beendet wird. Ein Hintergrundthread wird beendet, wenn der Prozess in dem sie laufen beendet wird.

Name = Name des Threads

Priority = Die Priorität des Threads wird vom Scheduler verwendet um zu entscheiden, wie viel Rechenzeit ein Thread bekommt.

Es gibt 5 mögliche Werte: Highest (meiste Rechenzeit), AboveNormal, Normal (Standart), BelowNormal und Lowest (wenigste Rechenzeit).

ThreadState = Gibt den Zustart des Threads an. Folgende Werte existieren:
Unstarted - Thread ist noch nicht gestartet worden
Runnig - Thread läuft
WaitSleepJoin - Thread schläft oder wartet auf einen anderen Thread
Suspended - Thread wurde angehalten
Aborted - Thread wurde abgebrochen

Dies wären die Grundlagen zum Thema Threading. Morgen werde ich zu den Synchronisationsproblemen kommen.

Ralf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Grundlagen des Threading1.884Moderatorralf_oop28.08.04 19:18
Re: Grundlagen des Threading944Moderatorralf_oop29.08.04 19:33
Re: Grundlagen des Threading800Moderatorralf_oop30.08.04 19:05
Re: Grundlagen des Threading745Micke31.08.04 11:51
Re: Grundlagen des Threading744accu31.08.04 09:31
Re: Grundlagen des Threading719spike2431.08.04 11:36
Re: Grundlagen des Threading757accu31.08.04 15:23
Re: Grundlagen des Threading817Moderatorralf_oop31.08.04 15:55

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel