title image


Smiley VB2005: Ungültiger threadübergreifender Vorgang. Was nun?
Hallo zusammen!

Hab 'nen Problem, das ich einfach nicht gescheit gelöst bekomme. Ich habe mal ein kurzes Beispiel geschrieben, welches mein Problem darfstellt. Bei folg. Code habe ich einfach eine Textbox1 und ein Button1 auf die Form gezogen und dann den nachfolgenden Code geschrieben. Müsste bei jedem auch sofort funktionieren dann. Beim starten bekomme ich einen Fehler: "Ungültiger threadübergreifender Vorgang".

Der kompl. Code ist wie folgt:







Public Class Form1

    Private WithEvents myJustDoSomething As JustDoSomething



    'Beginnen, wenn ein Button gedrückt wurde

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

        myJustDoSomething = New JustDoSomething     'Neue Instanz meiner Klasse erzeigen

    End Sub



    'Darauf reagieren, wenn meine Klasse das Ereignis "MessageReceived" wirft

    Private Sub myJustDoSomething_RemotePCSentUsAMessage(ByVal sender As JustDoSomething, ByVal message As String) Handles myJustDoSomething.RemotePCSentUsAMessage

        TextBox1.Text = message 'Textbox mit dem vom Ereignis übergebenen String "message" füllen

    End Sub

End Class



Public Class JustDoSomething 'Meine Klasse, in der asynchrone Vorgänge stattfinden sollen

    Public Event RemotePCSentUsAMessage(ByVal sender As JustDoSomething, ByVal message As String)



    Public Sub New()    'Beim instanzieren, direkt einen neuen Prozess starten

        Dim myProcess As New Threading.Thread(AddressOf DoSomethingAsynch)

        myProcess.Start()

    End Sub



    Private Sub DoSomethingAsynch()

        'Irgendetwas asynchrones tun und dann ein Ereignis auslösen

        RaiseEvent RemotePCSentUsAMessage(Me, "My message")

    End Sub

End Class







Code eingefügt mit Syntaxhighlighter 4.0





Jedes Mal, wenn ich das Programm starten und dann auf den Button1 klicke, bekomme ich den folg. Fehler:

"Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement TextBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."



Hab' dann 'ne Menge rumgegoogled, von wegen Deleganten und so. Verstanden hab ichs leider nicht wirklich, auch wenns so funktioniert. Problem ist leider nur, daß ich an einem Projekt im Team arbeite und ich derjenige bin, der die asynchrone Klasse entwirft. Ich möchte demjenigen, der meine Klasse dann benutzt nicht mit Deleganten erschlagen. Der soll einfach nur auf mein Ereignis reagieren können, wie, als wenn er z.B. ein Textbox1_Clicked()-Ereignis behandeln würde.



Deshalb die Frage: Hat jemand von euch eine Ahnung, was ich an dem Code ändern kann, damit er funktioniert?



Wäre euch SEHR SEHR dankbar!


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: