2017-10-01 3 views
-1

Ich habe eine ziemlich große Anwendung geschrieben, die im Hintergrund läuft, Dome-Sachen macht und einige Daten verarbeitet.Meine C# -Anwendung ist in einer Schleife, wie kann ich die Position im Code finden?

Jetzt ist das Problem, seit einiger Zeit läuft die Anwendung gut. Aber wenn ich einen Tag später zum Beispiel nachschaue, scheint der Backgroundworker meiner Anwendung zu loopen oder stecken zu bleiben. Es gibt keine Fehlermeldung und die Benutzeroberfläche der Anwendung läuft immer noch einwandfrei. Es hört einfach auf, Daten zu verarbeiten.

Speziell für diesen Fall habe ich eine einfache Website für mich hinzugefügt, wo der Backgroundworker die aktuelle DateTime meldet. Wenn die DateTime auf der Website etwas aktuell ist, weiß ich, dass es gut läuft. Aber wenn es in der Vergangenheit ist, weiß ich, dass meine Anwendung blockiert ist.

Das Problem tritt nach einer unbestimmten Zeit auf. Es kann 10 Minuten oder 90 Stunden sein.

Jetzt zum Debuggen: Gibt es einen Weg in Visual Studio, dass ich sehen kann, wo die Anwendung derzeit ist? Das würde das Debuggen erheblich vereinfachen. Otherwhise Ich muss Stützpunkte auf Trial-and-Error-Basis ...

Mit freundlichen Grüßen,

Julian

+0

Hängen Sie den Debugger an und drücken Sie die Pause-Taste. – CodeCaster

+0

Ich bekomme den Backgroundworker dann nicht. Ich komme dann zur aktuellen Zeile: Application.Run (new Form1()); –

+0

Verwenden Sie ein Protokollierungsframework, um die Schritte zu registrieren, die Ihre Anwendung innerhalb der Schleife ausführt. Dump in der Protokolldatei auch die Informationen über die Werte der Schlüsselvariablen innerhalb der Schleife und die Lebensdauer und die wichtigsten Punkte innerhalb der Schleife verwalten. Lassen Sie Ihre App laufen und überprüfen Sie nach Ablauf der erforderlichen Zeit den Inhalt der Protokolldatei. – Steve

Antwort

0

Sie haben zwei Möglichkeiten setzen würde:

1.- befestigen Sie den Debugger, wie es ist bereits vorgeschlagen und überprüfen Sie den Code, aber wenn die Anwendung für eine lange Zeit in Ordnung ist, ist es nicht die beste Idee.

2.- Protokolldateien. Erstellen Sie Protokolldateien, um Ihre Anwendung zu verfolgen.

Was ich tun würde: Ich würde beide Optionen kombinieren. Fügen Sie Protokolldateien hinzu, um die Ergebnisse zu überprüfen und wenn die Anwendung bestimmte Punkte erreicht hat (um von Ihnen zu entscheiden) und dann, wenn ich mehr oder weniger weiß, wo das Problem liegt, verwenden Sie den Debugger.

Viel Glück

Edit:

ich voll und ganz mit dieser Antwort stimmen aber möchte hinzufügen, dass Sie davon ab, den Hintergrund Arbeiter Pass Schlüsselposition Informationen zurück an den UI profitieren können, da sie eintritt und bestimmte Abschnitte so dass Sie dies beim Anfügen einfach abfragen können. Da das Problem mehrere Stunden dauern kann, um sich zu manifestieren, könnten Sie mit einer Menge Protokolldatei durchwaten, bis Sie ein fortlaufendes Protokoll mit begrenzten Einträgen verwenden. Wenn Sie fortwährend eine Warnmeldung setzen, können Sie zumindest ungefähr wissen, wo der Haltepunkt platziert werden soll in diesem Moment.

Verwandte Themen