Threadübergreifender Vorgang

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Tibiamicus.

    Threadübergreifender Vorgang

    Hi Leute,

    ich möchte einer Richtextbox einen String hinzufügen.
    Das ganze soll asynchron laufen.
    Ich benutze dazu die Treading.Thred Methode aber immer wenn ich etwas zu der Richtextbox hinzufügen will, meint VB das sei ein threadübergreifender Vorgang und gibt einen Fehler aus.

    Wie kann ich das ändern?

    Code:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim start As System.Threading.Thread
    3. Try
    4. start = New System.Threading.Thread(AddressOf silbe_auswählen)
    5. start.Start()
    6. Catch ex As Exception
    7. MsgBox(Err.Description.ToString)
    8. End Try
    9. End Sub
    10. Private Sub buchstabe_auswählen()
    11. Dim zahl As Integer
    12. Dim rand As New System.Random
    13. zahl = rand.Next(1, 5)
    14. Select Case zahl
    15. Case 1
    16. ListBox1.Items.Add(silbe)
    17. RichTextBox1.Text += "f"
    18. Case 2
    19. 'an Reim angleichen
    20. ListBox1.Items.Add(silbe2)
    21. RichTextBox1.Text += "a"
    22. Case 3
    23. ListBox1.Items.Add(silbe3)
    24. RichTextBox1.Text += "g"
    25. Case 4
    26. ListBox1.Items.Add(silbe4)
    27. RichTextBox1.Text += "y"
    28. Case 5
    29. ListBox1.Items.Add(silbe5)
    30. RichTextBox1.Text += "x"
    31. End Select
    32. End Sub
    Nicht leider. Steuerelemente empfangen alle Events über den Messageloop des Hauptthread, und wenn man aus einem Nebenthread darauf zugreifen könnte, dann bestünde die Möglichkeit, diesen Messageloop damit zu blockieren, ein sogenannter Deadlock entsteht.