title image


Smiley Re: VB2005: Ungültiger threadübergreifender Vorgang. Was nun?
"The base class Control provides several methods (Invoke, BeginInvoke, and EndInvoke) for this purpose. Invoke makes synchronous method calls; BeginInvoke makes asynchronous method calls."



Das kann man so umsetzen:







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(Me)     '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

    Private _Owner As Form

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



    Private Invoker As MethodInvoker = AddressOf InvokeRaiseEvent



    Public Sub New(ByVal OwnerArg As Form)

        MyBase.New()

        _Owner = OwnerArg

        Dim myProcess As New Threading.Thread(AddressOf DoSomethingAsynch)

        myProcess.Start()

    End Sub



    Private Sub InvokeRaiseEvent()

        RaiseEvent RemotePCSentUsAMessage(Me, "My message")

    End Sub



    Private Sub DoSomethingAsynch()

        'Irgendetwas asynchrones tun und dann ein Ereignis auslösen

        _Owner.Invoke(Invoker)

    End Sub

End Class Code eingefügt mit Syntaxhighlighter 1.16



JustDoSomething braucht aber irgendein Control aus dem HauptThread, um zu invoken

Hoffnung trügt.

(eigentlich dürfte man im Spotlight-VB-Forum keine Fragen stellen, wenn man nicht vorher auf ActiveVB geguckt hat)




geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: