Windowsstart abwarten

  • VB.NET

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

    Windowsstart abwarten

    Guten Morgen,

    mein Programm wird über kleine Batchdatei (Autostart) nach Booten des Rechners gestartet.
    Es beginnt dann mit gewissen Aufgaben und ist hin und wieder schneller als das Windows komplett gestartet ist.
    In diesem Fall kommt es dann zu Konflikten.
    Stelle mir einen Timer als StartWarteOption vor.
    Weis aber nicht was ich da abfragen soll.
    Gruß Markus
    @Westerwälder im einfachsten Fall mit ner Warteschleife über Timer.
    Da musst Du allerdings die Batch-Datei durch ein Programm ersetzen.
    In diesem könntest Du dann auch direkt auf den Fehler reagieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es werden diverse Daten aus dem Internet runtergeladen.
    Anschliessend wird ein Backup gefahren.
    Es kommt dann keine Fehlermeldung.
    Das Programm ist dann einfach weg, aus dem RAM
    Windows generiert dann alle Icons neu.

    Ergänzung:
    Die Probleme treten bei drei Rechner in meinem Haushalt auf
    Schliesse ein Hardwareproblem aus.

    Hier mal die Batch:

    @echo off

    :Pruefung
    IF EXIST \\FritzBeyer\FritzBeyer\Kingston-DataTraveler2-0-01\MBSOFT\PRGM\MBSOFT.exe goto :Kopieren

    goto :Starten

    :Kopieren

    if [%computername:~0,4%]==[PC01] goto :Starten
    Copy \\FritzBeyer\FritzBeyer\Kingston-DataTraveler2-0-01\MBSOFT\PRGM\MBSOFT.exe C:\MBSOFT\PRGM\MBSOFT.exe
    Copy \\FritzBeyer\FritzBeyer\Kingston-DataTraveler2-0-01\MBSOFT\DATA\MBSOFT.accdb C:\MBSOFT\DATA\MBSOFT.accdb

    :Starten
    start /min C:\MBSOFT\PRGM\MBSOFT.EXE

    :Ende


    Gruß Markus

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

    Ähnliches Problem hatte ich auch. Da wir ja hier in VB.Net unterwegs sind, hatte ich nach Programmstart einen Warteschleife eingebaut, die erstmal schaut, ob eine Netzwerk/Internetdatei verfügbar ist (wobei ersteres sinnvoller ist, da ich gehört habe, dass das Internet sehr volatil sein kann). Falls ja, kann's weitergehen; falls aber nicht, werden erstmal 5 Sekunden Däumchen gedreht und es dann nochmal probiert. Das ganze aber maximal 6 mal (=> der PC hat max. 30 Sekunden, um Zugang zum Netzwerk/Internet zu bekommen; wenn das immer noch nicht geklappt hat, dann scheint wohl ein Verbindungsproblem zu existieren.)
    Und während ich das hier so schreibe, fällt mir noch was besseres ein: Es gibt ein spezielles Event, welches gefeuert wird, wenn sich der Netzwerkverbindungsstatus ändert: Projekteigenschaften -> Anwendung -> [Anwendungsereignisse anzeigen]. Da gibt es das NetworkAvailabilityChanged-Event, welches man auswerten kann.
    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.

    Westerwälder schrieb:

    mein Programm wird über kleine Batchdatei (Autostart) nach Booten des Rechners gestartet.
    Es beginnt dann mit gewissen Aufgaben und ist hin und wieder schneller als das Windows komplett gestartet ist.
    In diesem Fall kommt es dann zu Konflikten.

    Soll das heißen, dass Windows es nicht schafft, die Dateien rechtzeitig zu kopieren, sondern dass Dein Programm mittels start /min C:\MBSOFT\PRGM\MBSOFT.EXE quasi zu früh gestartet wird?
    Wenn es das Problem ist: Wie äußert das Problem in Deinem Programm? Fehlen Dateien? Die lassen sich mit meinem ersten Vorschlag beheben, indem dann eben geschaut wird, ob bestimmt Dateien (schon). Falls nicht: Däumchen drehen. Sind sie out-of-date? Dann Erstellungs- oder Änderungsdatum der betroffenen Dateien auswerten und ebenfalls Däumchen drehen, bis die Dateien aktuell sind.
    Wenn das nicht das Problem ist, wäre eine genauere Problembeschreibung nochmal sinnvoll.
    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.
    Mal nebenbei eine andere Frage...
    ​Das ganze soll soweit ich das verstanden habe eh komplett im Hintergrund laufen? Wird nachdem es Fertig ist das Programm noch angezeigt oder so?
    wenn nicht verwende doch lieber einen win dienst? Dieser kann einfach auf: Automatisch (Verzögerter Start) gestellt werden...

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Ich erkläre es mal so
    Es gibt 5 Rechner in meinem Haus.
    Davon ist einer der Hauptrechner, nenne ihn mal Host
    Schalte ich diesen ab, wird das Programm mit evtl. Änderungen + Datenbank auf einen Stick der Fritzbox gespeichert.
    Startet man nun einen anderen Rechner, holt er sich die neuen Daten.
    So ist der Client auf dem Stand vom Host
    Gruß Markus

    Westerwälder schrieb:

    Schalte ich diesen ab, wird das Programm mit evtl. Änderungen + Datenbank auf einen Stick der Fritzbox gespeichert.

    1)
    Was passiert, wenn der Rechner crasht?
    Wird dann nichts gespeichert?
    Wenn das Daten sind, die sich ändern, würde ich die regelmässig speichern.

    2)
    Wie wäre es damit, das Datenverzeichnis permanent zu synchronisieren?
    Vom Host schreibend auf die Fritzbox und von den anderen Rechnern lesend von der Fritzbox.
    Falls mehrere Rechner Host sein können, einen Zweiwege-Sync.
    Dafür gibt's genügend Sync-Programme.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --