Programmfehler nur bei Rechnerneustart

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Westerwälder.

    Programmfehler nur bei Rechnerneustart

    Hallo,

    bin nun seit zwei Tagen auf der Fehlersuche in meinem Programm und komme einfach nicht weiter.

    Beschreibe mal kurz den Programmablauf.
    Nach Programmstart wird eine Art Warteform angezeigt.

    In entsprechenden Klassen werden nun folgende Aufgaben erledigt.
    1. Prüfen von 4 eMail-Konten auf neue Nachrichten
    2. Download Wetterdaten und diverse Preise (Benzin, Heizöl)
    3. Datensicherung auf einer externen FP

    Diese Vorgänge werden in der Warteform in einem Label unter Nutzung eines Timers angzeigt.
    Nach dem booten wird das Programm via eines VBS-Script (Autostart) gestartet.

    Beim booten wird nun die eMail-Prüfung (alle 4) durchgeführt und auch in der Warteform angezeigt.
    Danach friert die Warteform ein. Im Hintergrund werden die o.a. Aufgaben 2 und 3 aber durchgeführt.

    Das seltsame nun, starte ich das Programm manuell (mit oder ohne Script) funktioniert alles wie gewollt und die Warteform friert auch nicht ein.
    Es passiert nur wenn der PC startet.

    Weis wirklich nicht wie ich diesen Fehler lokalisieren soll.
    Hat vielleicht jemand eine Idee?

    PS: Habe nun meinen Zweitrechner mit dem gleichen Programm und Script gestartet.
    Dieser hat noch die Windowsversion 1809 wobei mein Hauptrechner die Version 1903 besitzt.
    Windowsupdate und Fehlerauftritt waren zeitnah.
    Gruß Markus

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Westerwälder“ ()

    Westerwälder schrieb:


    Das seltsame nun, starte ich das Programm manuell (mit oder ohne Script) funktioniert alles wie gewollt und die Warteform friert auch nicht ein.
    Es passiert nur wenn der PC startet.

    Klingt für mich als würde Dein Programm auf die extere FP zugreifen wollen, obwohl die noch nicht vollständig von dem Booten im System eingebunden ist (noch im Schlafmodus).
    Teste mal mit einem USB-Stick ob das Verhalten beim Neustart immer noch auftritt.
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love:
    Du könntest es nebenläufig probieren, damit das Form gar nicht erst einfriert. Zum anderen stellt sich die Frage: Ist die Externe ein Netzlaufwerk? Ist sie definitiv ab PC-Start ansprechbar?
    Und warum über ein VBS? Da wäre doch die Aufgabenplanung sinnvoller. Vielleicht sogar zuverlässiger.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Guten Morgen und danke für die Überlegungen.

    Die Festplatte ist über USB 3.0 verbunden und ansprechbar. Wie bereits oben geschrieben, werden alle 3 Aufgaben ausgeführt. Normal wird die Warteform nach Aufgabe 2 geschlossen und die Hauptform wird sichtbar.
    Da die Warteform die Hauptform öffnet, diese aber nun eingefroren ist, wird dieser Vorgang nicht mehr vollzogen.
    Die Datensicherung erfolgt trotz der eingefrorener Warteform.

    Starte über VBS, da der Admin-Rechner andere Startbedingungen im Gegensatz zu den beiden Client-Rechner hat.
    Da die Downloadaufgaben noch in einem anderen Programm gebraucht werden, habe ich hierfür eine DLL erstellt.
    Wenn sich eine Website für den Download ändert, so muss ich nur die DLL ändern.

    Tippe auf das Windowsupdate (Version 1903), da der Zweitrechner diese Macken nicht zeigt.
    Kann auch sein, der Hauptrechner ist relativ neu (mit SSD), und sehr schnell gestartet im Gegensatz zu dem Zweitrechner.

    Edit:
    Habe nun folgendes festgestellt:
    Starte ich nicht über Autostart sondern manuell, muss ich auch etwas warten, bevor ich das Programm manuell starte.
    Mache ich dies sofort nach Rechnerstart, tritt der Fehler ebenfalls auf.
    Sieht fast so aus, als ob Windows nach dem booten noch irgendwas werkelt, was zum Einfrieren der Warteform führt.

    Habe es nun mit einer Wartezeit nach dem booten gelöst.

    VB.NET-Quellcode

    1. Private Function Windowslaufzeit() As Integer
    2. Dim Laufzeit As TimeSpan = TimeSpan.FromMilliseconds(My.Computer.Clock.TickCount)
    3. Return Laufzeit.Seconds
    4. End Function
    5. Private Sub Timer_Windowszeit_Tick(sender As Object, e As EventArgs) Handles Timer_Windowszeit.Tick
    6. Label_Aktion.Text = "Programmstart in " & (20 - Windowslaufzeit()).ToString & " Sekunden"
    7. If Windowslaufzeit() > 20 Then
    8. Timer_Windowszeit.Enabled = False
    9. Timer_Aktion.Enabled = True
    10. Label_Aktion.Text = "Installiere Systemkomponenten ..."
    11. Initalisieren() 'Startet Emailprüfung, Downloads usw.
    12. End If
    13. End Sub

    Warum dies nun seit 3 Tagen sein muss, weis ich leider nicht.
    Am nachfolgenden Code kann es ja nicht liegen.

    Gruß Markus

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Westerwälder“ ()

    Heute morgen mit der Wartezeit dreimal erfolgreich getestet.
    Nun nach der Mittagspause gleicher Fehler wieder.
    Zweitrechner mit gleichem Programm alles in Ordnung.
    Weis nicht wo ich noch ansetzen soll.
    Muss ja was mit dem Windowsupdate zu tun haben.
    Gruß Markus
    Guten Morgen,

    habe ein Sfc /Scannow durchgeführt.
    Ergebnis: Der Windows-Ressourcenschutz hat beschädigte Dateien gefunden, die teilweise nicht repariert werden konnten.

    In der CBS.log sehe ich Einträge, wie:
    Status: Fehlend, oder
    im Laden stimmt Hash nicht überein
    Die Quelldatei im Speicher ist ebenfalls beschädigt

    Den Rechner habe ich im Januar 2019 bei Megaport gekauft. (Windows 10, 64-bit vorinstalliert)

    Kann mir das nur mit dem Update auf Version 1903 erklären.
    Hat jemand eine Idee wie man die schadhaften Dateien reparieren kann?
    Möchte nicht irgendein tool runterladen.

    PS:
    Habe die schadhaften Dateien mit DISM beheben können, jedoch bleibt der Fehler.
    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()

    Westerwälder schrieb:


    Habe die schadhaften Dateien mit DISM beheben können, jedoch bleibt der Fehler.

    Hast Du meinen Tip ausprobiert? Ich bin immer noch der Meinung das W10 schneller hochgefahren ist als früher damit der User schon die ersten Sachen machen kann und das teilweise externe Gerätschaften noch nicht komplett im System eingebunden sind.

    Bau einen kleinen Test ein vor dem Schreiben auf die externe Platte. Ist der Test negativ, dann muss Dein Programm eben für einige Zeit warten bevor es einen neuen Schreibversuch gibt.
    Aktuelles Projekt: Z80 Disassembler für Schneider/Amstrad CPC :love:
    Hallo oobdoo,

    habe nun alle Laufwerke überprüft.

    VB.NET-Quellcode

    1. Dim DZeile As DataRow = Nothing
    2. For a = 0 To Kontroll.Aktion.Datentabelle.Rows.Count - 1
    3. DZeile = Kontroll.Aktion.Datentabelle.Rows(a)
    4. If CBool(DZeile("DS")) Then 'Datensicherung
    5. MsgBox(DZeile("Bezeichnung").ToString & " ist online " & IO.Directory.Exists(DZeile("Zielordner").ToString))
    6. End If
    7. Next a
    8. MsgBox("PC ist online " & My.Computer.Network.Ping(Einstellungen.Netzwerk_Pruefseite).ToString)


    Alle Verzeichnisse vorhanden und der Rechner hat eine Internetverbindung.
    Die Datensicherung wird ja auch durchgeführt. Erkenne ich z.Bsp. an dem aktuellen Benzinpreis.
    Warteform friert nach Prüfung der eMail-Konten ein, aber nur bei dem Hauptrechner mit der Version 1903
    und Rechnerneustart.

    Edit:
    Habe mal die Aufgabe 1 (Prüfung der email-Konten) komplett rausgelassen.
    Das Programm beginnt nun mit den Downloads.
    Nun friert die Warteform (bei Rechnerneustart) nach dem ersten Download (Wetterdaten) ein.
    Starte ich manuell läuft hier wieder alles richtig und bis zum Ende.
    Gebe langsam auf.
    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()

    VaporiZed schrieb:

    Du könntest es nebenläufig probieren, damit das Form gar nicht erst einfriert.
    Langfristige Aufgaben sollten im Hintergrund laufen. Oder spricht was dagegen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Guten Morgen,

    habe das schon versucht. Die Warteform komplett heraus genommen. Gleiches Resultat.
    Windows automatische Updates deaktiviert.
    Laufwerke geprüft.

    Fakt ist ja, wenn ich den Autostart nicht nutze und nach einer geringen Wartezeit das Programm manuell starte, funktioniert alles.
    Die Logik sagt mir nun, mein Code ist ok. Er funktioniert seit Oktober 2018 bis zum Update auf Version 1903.

    Oder sehe ich das falsch?

    Nachtrag:
    Heute Mittag wurde ich nach Rechnerstart vor Eingabe der Windows-Pin durch ein Telefonat abgelenkt.
    Erst nach 2 Minuten habe ich die Pin eingeben können.
    Das Programm lief fehlerfrei (mit Autostart) bis zum Ende der Aufgaben.
    Somit schließe ich nun definitiv einen Codefehler aus und beende hier dieses Thema.
    Danke an alle.
    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()