Entwickler-Ecke
WinForms - Steuerelement in Methoden verwenden
mats74 - Fr 07.07.23 10:31
Titel: Steuerelement in Methoden verwenden
Hallo zusammen
Ich möchte ein Steuerelement als Referenz an einer Methode zur Verfügung stellen und direkt auf die Eigenschaften zugreifen.
Ich habe folgenden Code erstellt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| void Methode_1() { Methode_2(textBox1); }
public static void Methode_2(TextBox textBox) { textBox.Text = "Hallo"; } |
Dieser Code funktioniert.
Ich habe nun aber das Problem, dass das Programm teilweise ohne Fehlerausgabe geschlossen wird.
Ich habe nachgelesen, dass die Synchronisation des grafischen Steuerelements so nicht gewährleistet ist.
Die Referenzierung sollte wahrscheinlich so aussehen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| void Methode_1() { Methode_2(textBox1); }
public static void Methode_2(TextBox textBox) { textBox.Invoke((MethodInvoker)delegate { textBox.Text = "Hallo"; }); } |
Ich habe in diesem Fall leider zu wenig Erfahrung und sollte dies in einer grösseren Codestruktur mit vielen Steuerelementen umsetzen.
Kann mir jemand eine Rückmeldung geben, ob dieser Code so in der Praxis angewendet wird oder eine andere Codestruktur angewendet werden sollte?
Moderiert von Th69: Titel geändert ("vererben" -> "verwenden").
Ralf Jansen - Fr 07.07.23 14:59
Zitat: |
Ich habe nun aber das Problem, dass das Programm teilweise ohne Fehlerausgabe geschlossen wird. |
Das klingt dann nebenbei nach fehlendem Exception Handling/Logging und du bei jedem Problem nicht weißt warum es passiert ist da du kein Feedback/logging hast was passiert ist.
Das hier ist dann ein spezielles Problem das vermutlich auf Multi Threading zurückzuführen ist oder sein könnte.
Aber du solltest aus raten Wissen machen in dem du ein Exception Handling/Logging einbaust.
mats74 - Fr 07.07.23 15:02
Vielen Dank für deinen Hinweis.
Der Link ist sehr nützlich und beschreibt meine Problemstellung sehr treffend.
Ich werde daraus das weitere Vorgehen ableiten können.
mats74 - Fr 07.07.23 15:13
Zitat: |
... Aber du solltest aus raten Wissen machen in dem du ein Exception Handling/Logging einbaust... |
Ich habe schon einige Ausgaben in Logfiles aus den entsprechenden Exceptions gesetzt.
Leider habe ich noch keine schlüssigen Fehlermeldungen erhalten, die mir die Lösung des Problems ermöglichen.
Es besteht auch keinen eindeutigen Triggerpunkt für die Exception, da der Programmabbruch willkürlich aus unterschiedlichen Aktionen ausgelöst wird und nicht rekonstruierbar ist.
mats74 - Mo 07.08.23 08:41
Der globale Exception Handler hat uns weitere Information zu den Programmunterbrüchen geliefert.
Es bestehen noch einige Netzwerkkonfigurationen, welche die Zugriffzeiten auf den SQL-Server beeinflussen können.
Ich weiss nun, das einzelne Laufwerke in gewissen Konstellationen nicht erreichbar sind und erst nach entsprechenden Ausführungen wieder verbunden werden.
Ich schreibe nun die Methodenaufrufe um, damit keine Controls in den Parametern oder Parameterlisten existieren.
Einzelne Methoden haben zu lange Zugriffzeiten auf die Speichergrundlage oder sind grundsätzlich zu gross.
Dadurch können auch grafische Fehler erzeugt werden.
Dies ist sicherlich auch ein Grund, warum das Programm automatisch geschlossen wird.
Vielen Dank für eure Unterstützung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!