Christian Kusmanow
Erfahrenes Mitglied
Hallo FIAE's!
Ich hab ein kleines Form welches via Interface bestimmte Werte von dem Hauptform anzeigt. In dem Form befindet sich eine GroupBox und darinn ein TreeView.
Dieses kleine Form hat auch ein Interface damit ich vom Hauptform aus veranlassen kann, das der TreeView neu gezeichnet wird, wenn sich was verändert hat.
Das Neuzeichen lasse ich in einem Thread laufen damit das Hauptform nicht warten muss bis das kleine Form damit fertig ist.
(Der Thread startet in dem kleinem Form)
In der Methode, die in dem Thread ausgeführt wird, veranlasse ich das der TreeView nicht neu gezeichnet wird:
dann wird die Root-Node gefüllt und wenn es fertig ist, soll sich der TreeView wieder aktualisieren:
Und genau hier bekomm ich eine InvalidOperationException:
Versteh ich jetzt nicht. Ich mach das sonst immer so und bekomm keine Zugriffsverletzung.
Was hab ich da blos falsch gemacht?
MfG cosmo
Ich hab ein kleines Form welches via Interface bestimmte Werte von dem Hauptform anzeigt. In dem Form befindet sich eine GroupBox und darinn ein TreeView.
Dieses kleine Form hat auch ein Interface damit ich vom Hauptform aus veranlassen kann, das der TreeView neu gezeichnet wird, wenn sich was verändert hat.
Das Neuzeichen lasse ich in einem Thread laufen damit das Hauptform nicht warten muss bis das kleine Form damit fertig ist.
(Der Thread startet in dem kleinem Form)
In der Methode, die in dem Thread ausgeführt wird, veranlasse ich das der TreeView nicht neu gezeichnet wird:
Code:
private delegate void dUpdateTreeView();
gbxView.Invoke( new dUpdateTreeView( tvwDebugWindow.BeginUpdate ));
Code:
gbxView.Invoke( new dUpdateTreeView( tvwDebugWindow.EndUpdate ));
gbxView.Invoke( new dUpdateTreeView( tvwDebugWindow.ExpandAll ));
InvalidOperationException hat gesagt.:An unhandled exception of type 'System.InvalidOperationException' occurred in system.windows.forms.dll
Additional information: The action being performed on this control is being called from the wrong thread. You must marshal to the correct thread using Control.Invoke or Control.BeginInvoke to perform this action.
Versteh ich jetzt nicht. Ich mach das sonst immer so und bekomm keine Zugriffsverletzung.
Was hab ich da blos falsch gemacht?
MfG cosmo
Zuletzt bearbeitet: