Ok, es gibt viele Fragen zu diesem Fehler, aber ich kann keine Lösung für mein Problem finden. Ich habe einen Thread, der ein Steuerelement aus der Datenbank während einer langen laufenden Operation lädt. Wenn ich mein Fenster vor diesem Thread endet schließen, wirft es ein Invoke or BeginInvoke cannot be called on a control until the window handle has been created.
, wenn die Invoke
"Invoke oder BeginInvoke kann nicht aufgerufen werden ..." beim Schließen eines Fensters
tun ich den Code geändert haben, um wie folgt aussehen:
If Not Me.IsDisposed And Me.Created And Me.IsHandleCreated Then '
Me.Invoke(New AddImageDelegate(AddressOf AddImage), item.PartNo, New Bitmap(item.ImagePath))
Me.Invoke(New SetImageDelegate(AddressOf SetImage), I, item.PartNo)
End If
jedoch noch trifft die Invoke
Linie und wirft den Fehler auf. Wenn das Debuggen bei der Ausnahme stoppt, ist IsDisposed
wahr, .Created
ist falsch und .IsHandleCreated
ist falsch. Das Überprüfen dieser Eigenschaften hilft also nicht.
Also ... wie verhindere ich, dass in dieser Situation die Aufrufzeile ausgeführt wird?
mögliche Duplikate von [C# Winforms Threading: Geschlossen Formular wird aufgerufen] (http://stackoverflow.com/questions/3565551/c-sharp-winforms-threading-closed-form-gets-invoiced) –
@HansPassant, ja das scheint der Fall zu sein. Immer schwer zu finden, wenn es so viele ähnliche Probleme gibt, die nicht gleich sind. – Kratz