Hallo, habe 2 Forms in meinem Programm.
Über einen Button auf Form 1("Mainform") starte ich einen Thread der auf dem
Form2("Testfenster") über eine Methode Daten in ein ListView eintragen soll. Jedoch passiert nichts,
auch kein Fehler tritt auf.
Der Thread ist eine Klasse "Testlauf" mit der Methode "Run".
Der Thread läuft (zumindest springt er BreakPoints an) und die Methode zum eintragen ins
Listview wird angesprungen.
Hab mir dann beim Invokerequired einen BP gesetzt, dieses ist immer False !?
Dann hab ich aus Spass mal die ganzen Invokesachen ausdokumentiert, aber es tritt
nichtmal eine Exception wegen unzulässigen Threadübergreifenden Zugriff auf.
Wenn ich aber versuche auf Form1 Controls zuzugreifen kommt eine Exception, nur bei
Form2 passiert nichts.
Hoffe mir kann jemand helfen,
vielen dank im vorraus für jeden Tipp.
gruß Marco
Hier noch der (gekürzte) code:
Code im Button_Click event:
Dim Testlauf As New Test()
Dim TestRunThread = New Thread(AddressOf Testlauf.Run)
TestRunThread.Start() Code der Klasse:
Public Class Test
Public Sub New()
'
End Sub
Public Sub Run()
'
Mainform.Text = "TEST" 'Hier kommt eine Exception
Testfenster.lst_Ergebnisse_Add(1, 10, "Text", "Soll", "Ist", "Pass", _
Color.Green)
End sub
End Class Code in Form2:
'Delegates
Private Delegate Sub dlg_lst_Ergebnisse_add(ByVal int_IconNr As Int16, _
ByVal int_ZeilenNr As Int32, ByVal str_Text As String, ByVal str_SollText _
As String, ByVal str_IstText As String, ByVal str_TestErgebnis As String, _
ByVal col_Schriftfarbe As Color)
Public Sub lst_Ergebnisse_Add(ByVal int_IconNr As Int16, ByVal int_ZeilenNr As _
Int32, ByVal str_Text As String, ByVal str_SollText As String, ByVal _
str_IstText As String, ByVal str_TestErgebnis As String, ByVal _
col_Schriftfarbe As Color)
If Me.lst_Ergebnisse.InvokeRequired Then
Dim ext_lst_Ergebnisse_add As New dlg_lst_Ergebnisse_add(AddressOf _
lst_Ergebnisse_Add)
Me.Invoke(ext_lst_Ergebnisse_add, New Object() {int_IconNr, _
int_ZeilenNr, str_Text, str_SollText, str_IstText, _
str_TestErgebnis, col_Schriftfarbe})
Else
Dim ListItem As New ListViewItem
ListItem.UseItemStyleForSubItems = False
ListItem = Me.lst_Ergebnisse.Items.Add("", int_IconNr)
ListItem.SubItems.Add(CStr(int_ZeilenNr))
ListItem.SubItems.Add(str_Text)
ListItem.SubItems.Add(str_SollText)
ListItem.SubItems.Add(str_IstText)
ListItem.SubItems.Add(str_TestErgebnis)
ListItem.ForeColor = col_Schriftfarbe
End If
End Sub |