Announcement

Collapse
No announcement yet.

Programm beendet sich selbstständig

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Programm beendet sich selbstständig

    Hallo zusammen,

    ich habe ein Programm erstellt, das alle PC der Domäne aus dem AD liest.
    Dann wird für jeden PC in einer Schleife ein gesondertes Programm gestartet, das Werte von dort einliest.
    Das Programm läuft ohne Benutzerinteraktion und ohne Benutzeroberfläche. Innerhalb der Schleife beendet es sich ohne Fehlermeldung, bevor die Schleife komplett durchgelaufen ist.
    Hat da jemand einen Ansatz ?

  • #2
    Ich würde sagen das ist normal. Bei einem Fehlern wird eine Exception ausgelöst und wenn die niemand(du oder das Framework - kommt auf die Projektart an) abfängt beendet sich das Programm einfach. Also solltest du ein Exceptionhandling einbauen und dann irgendwas Geschicktes mit der Exception tun( anzeigen, loggen etc.).

    Comment


    • #3
      Das ist ja das komische an der Sache.

      Es läuft ein Logging mit, nicht nur für die Fehler, sondern für den Programmablauf.
      Es wird keine Exception ausgelöst und protokolliert.

      Hab das ganze gerade nochmals in der IDE laufen lassen und bekomme folgende Meldung, mit dr ich gar nichts anfangen kann:

      ContextSwitchDeadlock wurde erkannt.

      Message: Die CLR konnte 60 Sekunden lang keinen Übergang vom COM-Kontext 0x1fc9b0 zum COM-Kontext 0x1fcb20 durchführen. Der Thread, der Besitzer des Zielkontexts/-apartments ist, wartet entweder, ohne Meldungen zu verschieben, oder verarbeitet eine äußerst lang dauernde Operation, ohne Windows-Meldungen zu verschieben. Eine solche Situation beeinträchtigt in der Regel die Leistung und kann sogar dazu führen, dass die Anwendung nicht mehr reagiert oder die Speicherauslastung immer weiter zunimmt. Zur Vermeidung dieses Problems sollten alle STA-Threads (Singlethread-Apartment) primitive Typen verwenden, die beim Warten Meldungen verschieben (z.B. CoWaitForMultipleHandles), und bei lange dauernden Operationen generell Meldungen verschieben.

      Comment


      • #4
        Ich weiß ja nicht genau, was da ablaufen soll, aber das "für jeden PC [...] ein gesondertes Programm gestartet" macht mich stutzig. Dieses gesonderte Programm könnte an einer Meldung hängenbleiben oder auf einen Fehler laufen und ohne Rückmeldung abstürzen (z.B. weil ein bestimmter Rechner nicht gefunden wird), während Dein Programm auf Antwort wartet. Rufst Du dieses gesonderte Programm als extra Thread auf und lässt Dir von dem Programm eine Nachricht zurückmelden, oder ist das ein synchroner Aufruf, d.h. Dein Programm wartet auf die Antwort des aufgerufenen Programms?

        Die Fehlermeldung in der IDE klingt eher nach synchronem Aufruf. Ein ContextSwitchDeadlock zwischen IDE und debuggtem Programm kommt üblicherweise daher, dass der Debugger selbst keine Rückmeldung mehr von dem Programm bekommt, das er gerade debuggt (weil dieses Programm ja gerade die Kontrolle an das gesonderte Programm übergeben hat).

        Comment

        Working...
        X