[.Net]Frage zu Threads

  • Ersteller Ersteller Maninblack
  • Erstellt am Erstellt am
M

Maninblack

Gast
HiHo,
ich hab mal wieder ne Frage, so langsam nervts wa? Sorry, falls dem so sein sollte.....

Also ich habe mir folgendes Codebeispiel geschrieben:


Code:
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Thread.CurrentThread.Name = "MainFred"
        Dim thisThread As Thread = New Thread(AddressOf test2)
        thisThread.Start()

        rtbText.Invoke(instance, Thread.CurrentThread.Name)

    End Sub


    Dim instance As New bla(AddressOf blubb)
    Delegate Sub bla(ByVal test As String)

    Private Sub blubb(ByVal text As String)
        rtbText.Text += text
    End Sub


    Private Sub test2()
        Thread.CurrentThread.Name = "NewFred"
        rtbText.Invoke(instance, Thread.CurrentThread.Name)

        Thread.CurrentThread.Abort()
    End Sub
End Class
So jetzt wird aber in der box "MainFredNewFred" geschrieben.

Das bedeutet, dass der Thread "NewThread" zwar angestoßen wird, der MainThread aber nicht wartet, bis der NewThread fertig ist... Ist das normal? Womit erreiche ich, dass der anstoßende Thread auf den angestoßenen wartet?

Ich habe da mal irgendwas mit Join() gelesen, aber bisher hab ich nocht nicht in erfahrung gebracht, wie das geht.

gruß,
Sebastian
 
Ich glaub du kannst nem Thread sagen, was er tun soll, wenn er fertig ist!
Also einfach 10mal pro Sekunde nachschaun ob der Thread fertig ist, dann deinen Mainthread fortsetzen...

David
 
Maninblack schrieb:
...der MainThread aber nicht wartet, bis der NewThread fertig ist... Ist das normal?

Ja, das ist es. :) Genau das ist ja der Sinn von Threads, sachen parallel auszuführen.

Ich kenne mich zwar nicht mit VB.NET aus, allerdings sollte dir das hier wohl weiterhelfen können:
http://www.microsoft.com/germany/ms...ProgrammierungMitVisualBasicNET.mspx?mfr=true

Einfach mal die MSDN-Library bemühen, da stehen zig-tausend Sachen drin. :) Und - wenn du nicht weiter weißt, frag ruhig immer wieder. Dafür ist das Forum doch ;)
 
Also 10 mal pro Sekunde nachschauen ist nicht die ideale Lösung. Zum synchronisieren von Threads könnte man z.B. Events benutzen.

D.h. der zweite Thread wartet auf einen Event, den der erste Thread setzt wenn er fertig ist.

Das ist deutlich weniger Prozessorintensiv.

MfG

Arnd
 
Zurück
Oben