Hi,
ich versuche gerade ein event einzubauen in mein code dieser soll mir dann sagen wann der thread fertig ist und dann soll in dem event eine einspeisung in eine LVW geschehen.
Den code habe ich von der MS seite msdn.microsoft.com/de-de/library/Bb979513.aspx
er geht auch ohne probleme halt nur das mit dem event bekomme ich nicht hin. im event wenn er versucht auf die lvw zuzu greifgen gibs fehler.
->
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in System.Windows.Forms.dll aufgetreten.
Zusätzliche Informationen: Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement ListView1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
Spoiler anzeigen
Und keine Sprüche wie VB lernen oder Benutz irg. suche das wird gemeldet ! Sonst danke für richtige Hilfe!!!
ich versuche gerade ein event einzubauen in mein code dieser soll mir dann sagen wann der thread fertig ist und dann soll in dem event eine einspeisung in eine LVW geschehen.
Den code habe ich von der MS seite msdn.microsoft.com/de-de/library/Bb979513.aspx
er geht auch ohne probleme halt nur das mit dem event bekomme ich nicht hin. im event wenn er versucht auf die lvw zuzu greifgen gibs fehler.
->
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in System.Windows.Forms.dll aufgetreten.
Zusätzliche Informationen: Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement ListView1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
VB.NET-Quellcode
- Public MustInherit Class ThreadWrapperBase
- Public Shared Event Completed()
- ' Dies ist der Thread, in dem der Task ausgeführt wird.
- Public ReadOnly Thread As System.Threading.Thread
- Public Sub New()
- ' Thread erstellen.
- Me.Thread = New System.Threading.Thread(AddressOf Me.StartTask)
- End Sub
- ' Den Task im Arbeits-Thread starten.
- Public Overridable Sub Start()
- Me.Thread.Start()
- End Sub
- ' Den Task durch einen Abbruch des Threads stoppen.
- ' Sie können diese Methode überschreiben, um stattdessen
- ' eine ordentliche Stopp-Anforderung zu verwenden.
- Public Overridable Sub [Stop]()
- Me.Thread.Abort()
- End Sub
- ' Den Status des Tasks überwachen.
- Private _IsCompleted As Boolean
- Public ReadOnly Property IsCompleted() As Boolean
- Get
- Return _IsCompleted
- End Get
- End Property
- Private Sub StartTask()
- _IsCompleted = False
- DoTask()
- _IsCompleted = True
- RaiseEvent Completed() 'Fehler
- End Sub
- ' Diese Methode enthält den Code, der die eigentliche Aufgabe ausführt.
- Protected MustOverride Sub DoTask()
- End Class
VB.NET-Quellcode
- WithEvents ThreadFertig As New Suchen
- Private Sub MBtn2_Click(sender As Object, e As EventArgs) Handles MBtn2.Click
- Dim a As New Suchen
- a.Start()
- End Sub
- Private Sub ThreadFertig_Completed() Handles ThreadFertig.Completed
- With ListView1
- .Items.Clear()
- For i = 0 To SenderlistAktuell.Tables("SenderOut").Rows.Count - 1
- Dim row As DataRow = SenderlistAktuell.Tables("SenderOut").Rows(i)
- Dim g As String = CStr(row("Provider"))
- .Groups.Add(New ListViewGroup(g, g)) 'Fehler
- .Items.Add(New ListViewItem(New String() {CStr(row("Sender")), CStr(row("Track"))}, .Groups(CStr(row("Provider"))))) 'Fehler
- Next
- .AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize) 'Fehler
- End With
- End Sub
Und keine Sprüche wie VB lernen oder Benutz irg. suche das wird gemeldet ! Sonst danke für richtige Hilfe!!!