Laden...

Windows Forms friert während Debugging ein

Erstellt von Kontur vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.518 Views
Thema geschlossen
K
Kontur Themenstarter:in
2 Beiträge seit 2012
vor 11 Jahren
Windows Forms friert während Debugging ein

Hallo!
ich verwende C# um verschiedene Berechnungen durchzuführen. Um für erste Tests zu prüfen, ob die Berechnung korrekt ist, halte ich die Programmausführung an und schaue mir die Variablen im Debugger an. Manche Daten lassen sich besser in Diagrammen anschauen, daher habe ich eine DLL geschrieben und eingebunden, die die Daten in einem Windows form-Fenster graphisch anzeigt (soll so ähnlich wie in Matlab funktionieren). Jetzt habe ich folgendes Problem:
Wenn ich nach der Berechnung das Programm mit dem Debugger stoppe, friert auch das Diagrammfenster ein und lässt sich nicht mehr bedienen (vergrößern, drucken, speichern, usw.). Daher ist der aktuelle Ansatz unbrauchbar. Das Diagrammfenster soll, wenn das Berechnungsprogramm angehalten wurde, noch voll bedienbar sein. Welchen grundsätzlichen Ansatz würdet Ihr wählen, um dieses Problem zu lösen?

C
2.122 Beiträge seit 2010
vor 11 Jahren

Klar, du hältst ja das gesamte Ding an.
Ich glaub auch nicht dass es da eine schnelle Lösung gibt. Warum ist dir das so wichtig, das Fenster bedienen zu können und der Rest des Programms bleibt stehen?
Du könntest dir alle Variablen ins Fenster ausgeben lassen, dann kannst du sie ohne anhalten sehen.

T
2.224 Beiträge seit 2008
vor 11 Jahren

Oder noch besser mal ein Log schreiben 😃
Dann brauchst du nicht zu debuggen und das Programm läuft weiter.
Ebenfalls hast du dann alles zum prüfen da.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

K
Kontur Themenstarter:in
2 Beiträge seit 2012
vor 11 Jahren

Danke erstmal.
Das Loggen der Variablen ist nicht so einfach, es handelt sich um verschiedene Arrays unterschiedlicher Datentypen, Länge teilweise über 10E5 Werte, die der Debugger eigentlich schön in Tabellen darstellt. Ich habe folgende Idee: Ich erzeuge ne separate Anwendung (Diagramm), die per IPC mit der in meinem Programm (Berechnung) eingebundenen DLL kommuniziert. Über IPC werden dann die Daten rübergeschoben. Ich hatte allerdings gehofft, es gibt etwas einfacheres.

C
1.214 Beiträge seit 2006
vor 11 Jahren

Log schreiben ist keine schlechte Idee, find ich. Du kannst es ja auch entsprechend formatieren.
Du könntest dein Diagrammfenster auch als Debugger Visualizer in Visual Studio einbinden.

3.170 Beiträge seit 2006
vor 11 Jahren

Hallo,

Deien Anforderung kommt mir auch etwas seltsam vor Ein Vorgang wie das Anhalten durch einen Debugger wird einem Programm im Nutzfall nie passieren:

Klar, du hältst ja das gesamte Ding an.

Und auch Dein Vorgehen mit IPC wird dir IMO nichts nützen, wenn Du dann im GUI-Progamm debuggen willst.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo Kontur,

ich bin mir nicht sicher, ob der Debugger das Problem ist, aber letztlich ist das egal.

Natürlich ist es wie MarsStein sagt: wenn du den GUI-Thread debuggst wird das Fenster immer einfrieren. Die Alternative Logging wurde ja schon genannt. Oder man muss eben mit dem Einfrieren leben.

Auf der anderen Seite sprichst du ja über Berechnungen bzw. das Anhalten derselben. Dadurch das Anhalten der Berechnung muss das GUI nicht blockieren und man muss die Berechnungen auch nicht in einen extra Prozess auslagern, um das GUI nicht blockiert, sondern es reicht, wenn man sich an das Standardvorgehen für (langlaufende) Berechnungen hält, siehe [FAQ] Warum blockiert mein GUI?

Das im ersten (inhaltlichen) Absatz gesagte benötigt keine weitere Klärung. Das im zweiten Absatz gesagte fällt unter Grundlagen. Insofern ist es dann letztlich auch wieder egal, ob es ein Problem mit dem Debugger ist oder mit dem Programmaufbau. Du solltest jetzt alleine weiterkommen.

herbivore

Thema geschlossen