Autor |
Beitrag |
aloneboy
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 19:34
Hallo zusammen,
ich öffne aus Form1 Form2, von Form2 wird Form3 geöffnet, wenn ich über einen Button Form3 mit this.close(); schließe wird/sollte Form2 durch ein Event auch geschlossen werden.
Dazwischen kommt aber immer wieder dieser Ausnahmefehler und das komische dabei ist, er sagt das ich lbl_VerkäuferNr ändern wollte, doch an diesem Label wird nie etwas versucht zu ändern.
Wie komme ich dazu den Fehler zu finden und zu beheben ausser mit CheckForIllegalCrossThreadCalls = false;
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 lbl_VerkäuferNr erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
danke
Gruß Oly
Moderiert von Th69: C#-Tags hinzugefügt
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 05.09.14 19:38
Nur durch öffnen und schließen von Formen bekommt man keine threadübergreifenden Vorgänge.
Wo kommen bei dir Threads ins Spiel?
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Fr 05.09.14 19:43
Hallo,
ich denke, die Fehlermeldung wird wohl schon so stimmen. Schau dir einfach mal den Stacktrace (Aufrufstapel) im Visual Studio an, wenn die Exception erscheint - dann kannst du mit einem Doppelklick zu der aufrufenden Methode (in deinem Code) springen.
Benutzt du denn irgendwelche Threads (oder Tasks oder ein sonstiges asynchrones Ereignis) in deinem Programm?
Zur Behebung schau dir mal diesen Artikel an (aus dem myCSharp-Forum): Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 20:02
@Ralf: Wenn kein automatischer Thread eröffnet wird ausser von der Hauptform, dann kann ich es nicht sagen, ich habe bewusst keinen Thread eröffnet.
@th69: könntest DU mir bitte sAGEN WIE ICH DEN Aufrufstabel finde?
PS: Sorry, ich bin noch nicht lange dabei C# zu programmieren von daher ist es auch ziemlich schwer den Link zu verstehen, den hatte ich mir gestern schon mal angesehen.
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 05.09.14 20:09
Dann zeig uns ein wenig Code.
Zumindest den Teil wo du die anderen Formen erzeugst, wie du die Formen miteinander bekannt machst so das die sich kennen bzw. denn Teil wo du denn Event zum schließen verdrahtest und denn Code zum schließen der Formen.
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 20:11
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 20:32
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 05.09.14 20:37
Timer_neu_starten klingt verdächtig.
Auch wenn der Handler an FormClosed hängt ist da noch irgendwo ein Timer im Spiel? Wenn ja welcher Typ.
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 20:40
Die Idee hatte ich auch bereits,
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| public void Timer_neu_starten(object sender,EventArgs e) { } |
deshalb zur Probe auskommentiert, dennoch kommt der Fehler
Moderiert von Th69: C#-Tags hinzugefügt
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 05.09.14 20:44
Kontrollier nochmal dein Code. Wenn du den Timer aus dem System.Timers Namespace benutzt so wird dessen Elapsed Event in einem anderen Thread gefeuert. Wenn du eine Form aus diesem Event versuchst zu closen oder disposen wird das zu dem von dir beobachteten Fehler führen.
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 20:47
das ist ein Timer Control auf Form1
und der Fehler würde dennoch auftreten, selbst wenn alles auskommentiert ist?
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 20:48
System.Windows.Forms.Timer
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 05.09.14 20:49
Der Timer ist unverdächtig der arbeitet ohne Threads.
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 05.09.14 20:54
Dann sind wir jetzt an dem Punkt den Th69 schon erahnt hat. Wir brauchen den Stacktrace.
Wenn du dein Programm mal debuggst und nochmal bis zum Fehler laufen lässt sollte dann ja in Visual Studio ein Dialog angezeigt werden mit den Fehlerdetail. Unten auf dem Dialog sollte sich ein Link "Copy exception detail to the clipboard" (oder das deutschsprachige Äquivalent) befinden. Benutz den mal und paste das Ergebnis dann hier rein.
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 20:58
ich habe den ganzen Text gepostet, darunter erscheint nur noch Unterbrechen und weiter, ignorieren ist ausgeblendet.
Das Programm lief im Hintergrund auch weiter, der Timer wurde ausgelöst. Das Programm endet sobald ich ein Button klicke
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 21:27
Das müsste der Stacktrace sein
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69:
| [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_abschließen.Dispose(bool disposing) Zeile 20 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Dispose(bool disposing) Zeile 20 C# [Externer Code] > WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_bearbeiten.Formgeschlossen(object sender, System.EventArgs e) Zeile 135 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Form_Auftrag_abschließen.btn_Abschluß_Click(object sender, System.EventArgs e) Zeile 117 C# [Externer Code] WindowsFormsApplication2.exe!WindowsFormsApplication2.Program.Main() Zeile 21 C# [Externer Code] |
Moderiert von Th69: Code-Tags hinzugefügt
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 21:29
|
|
C#
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Fr 05.09.14 21:47
Also ich kann nix ungewöhnliches entdecken. Ist das der komplette Stacktrace? Hast du vielleicht noch ein Form_Auftrag_bearbeiten_Close Event eingebaut indem du etwas machst? Ich bin mir nicht sicher, aber ist es normal das 20x der gleiche Aufruf im Stacktrace steht?
PS: Bitte benutze Code-Tags (cs) Dein Code (/cs). Ersetzte die Klammern () mit Eckigen []
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 22:06
Nein, normal bestimmt nicht. Deshalb habe ich das this.close aus Zeile 135 mal auskommentiert. Form3 wird geschlossen, form2 bleibt auf. Ich habe zumindest nichts gefunden, sieht fast wie eine Endlosschleife aus die unterbrochen wird.
Moderiert von Th69: C#-Tags hinzugefügt
|
|
aloneboy 
      
Beiträge: 45
|
Verfasst: Fr 05.09.14 22:14
Form_Auftrag_bearbeiten ist Form2 und da ist das event das der timer neu gestartet wirdd
|
|