[.NET] Multithreading Problem

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von MasterJulian, 19. Juni 2009 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 19. Juni 2009
    Multithreading Problem

    Ich hab den Thread wieder geöffnet, weil ich ein neues Problem habe. Ich möchte innerhalb des Threads einen Output haben. Hierzu habe ich den Code zum sicheren schreiben aus einem Thread aus der MSDN Adaptiert:
    Code:
     Public Sub Log(ByVal text As String)
     ' InvokeRequired required compares the thread ID of the
     ' calling thread to the thread ID of the creating thread.
     ' If these threads are different, it returns true.
    
     If Me.TxtResult.InvokeRequired Then
     Dim d As New SetTextCallback(AddressOf LogDownload)
     Me.Invoke(d, New Object() {[text]})
     Else
     If Me.TxtResult.Text = "" Then
     TxtResult.Text = [text]
     Else
     Me.TxtResult.AppendText(vbCrLf & [text])
     End If
    
     End If
     End Sub
    Das funktioniert soweit auch ganz gut, wenn ich eine Sub (ohne Parameter) in einem neuen Thread diese Logfunktion aufrufen lasse und sich diese Sub in der gleichen Form befindet. Doch ich packe (aus Übersichtlichkeitsgründen) meine Funktionen immer in ein Modul. Wenn ich hier (im Modul) mit einem neuen thread die Funktion über meineform.Log("text") aufrufe passiert garnichts. Genauso wie wenn ich die Log sub mit in das Modul packe und Me mit dem Formnamen ersetze. Was mache ich falsch?
    Altes Proble:
    Spoiler
    Ich arbeite mich gerade in Multithreading ein. Doch wie starte ich eine Sub in einem neuen Thread an die Daten gesendet werden. z.B.:
    Code:
    Private Sub MeineSub(Byval Text as String, Byval count as Integer)
    for i as Integer = 1 to count
    debug.print(Text)
    Threading.Thread.Sleep(1000)
    next
    End Sub
    
    Private Sub BtStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtStart.Click
    Dim thrMyThread As New System.Threading.Thread(AddressOf MeineSub) [COLOR="Red"]'Wie hier die Args Text und count übergeben?[/COLOR]
    thrMyThread.Start()
    End Sub
    Code is ungetestet, hab ich gerade beim erstellen des Threads geschrieben aber ich denke es verdeutlicht mein Problem ganz gut.
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 20. Juni 2009
  4. #3 20. Juni 2009
    AW: Multithreading Problem

    Du kannst nur Parameterlose startsubs für Threads erstellen. Am besten du baust dir eine eigene Klasse und anstatt den Parametern übergibst du deine werte als Properties.

    .net multithreading passing data - Google-Suche

    Gruß
    meckes
     
  5. #4 20. Juni 2009
    AW: Multithreading Problem

    ok danke für die Infos. Dan eben als Klasse.
    //Edit wieder offen da neues Problem!
     

  6. Videos zum Thema
Die Seite wird geladen...