webForumDet fria alternativet

Starta om applikation om den avslutas?

.NET

5 svar · 634 visningar · startad av CatZ

Medlem sedan jan. 20022 440 inlägg
Frågan#1

Jag behöver starta om en applikation om den avslutas eller kraschar... hur gör man det? Jag vet att det finns

Application.Restart();
Application.Exit(int exitcode);
Thread.Exit();
Environment.Exit();

Jag kör lite simpel loggning om applikationen avslutas men jag vill även kunna starta om den i frmMain_FormClosed eftersom användaren som kör applikationen gör det via remotedesktop och det är det enda som användaren kan köra. Det finns inget skrivbord eller någon startmeny.

Går det att lösa på ett hyffsat smidigt sätt? Ett alternativ är ju att skapa ett vbs eller wmi script och köra via schemaläggare varje sekund och så länge processen ?.exe inte körs längre så starta den men det känns onödigt bökigt :)

Medlem sedan juni 20008 205 inlägg
#2

Du kan ju göra ett wrapperprogram som när det körs direkt startar ditt program i en ny process, och när den underprocessen avslutas (dvs när exited-eventet triggas) startar du programmet igen.

Medlem sedan maj 20012 812 inlägg
#3

catz skrev:

Går det att lösa på ett hyffsat smidigt sätt? Ett alternativ är ju att skapa ett vbs eller wmi script och köra via schemaläggare varje sekund och så länge processen ?.exe inte körs längre så starta den men det känns onödigt bökigt

Vi har ett video övervakningsprogram på jobbet, de har en extern applikation som de kallar "watchdog" och som hela tiden ligger och kontrollerar om själva programmet körs, om inte huvudprogrammet körs så startas det upp igen...

Problemet här blir ju vad som händer om watchdog programmet stängs ner, vem skall övervaka så att de alltid körs då??? :)

- M

Medlem sedan aug. 20003 575 inlägg
#4

Gladh skrev:

catz skrev:

Går det att lösa på ett hyffsat smidigt sätt? Ett alternativ är ju att skapa ett vbs eller wmi script och köra via schemaläggare varje sekund och så länge processen ?.exe inte körs längre så starta den men det känns onödigt bökigt

Vi har ett video övervakningsprogram på jobbet, de har en extern applikation som de kallar "watchdog" och som hela tiden ligger och kontrollerar om själva programmet körs, om inte huvudprogrammet körs så startas det upp igen...

Problemet här blir ju vad som händer om watchdog programmet stängs ner, vem skall övervaka så att de alltid körs då??? :)

- M

Om man tittar på spyware idag så kan man ju låta huvudprogrammet kolla på watchdogprogrammet och starta om det om det stängs av, eller ha 2 watchdogprogram som startar varandra och håller koll på huvudprogrammet.

Medlem sedan jan. 20022 440 inlägg
#5

Äsch jag slängde in OnFormClose / exit så går jag igenom vilken typ av avstägning det är och startar om programmet om det inte är så att windows avslutas..

Sedan har jag lagt in OnThreadError och UnhandledException som events, fångar alla problem som kan dyka upp och skickar mig själv ett epost meddelande. Hittills har jag inte lyckats krascha programmet igen.

Jag kommer komplettera detta med någon typ av watchdog program. Kan ju inte vara så svårt att slänga ihop nåt i C#. Mina knähundar får kolla en gång i sekunden om de själva och huvudprogrammet är i run-mode! :)

Medlem sedan jan. 20022 440 inlägg
#6

Ska tillägga också att jag försökte starta om i Exited men det fungerar inte eftersom det är form main som avslutats och inget körs mer, då kan jag inte kolla vad applikationen heter och vad sökvägen till den är... skulle kanske kunna skicka med det från OnExiting?

267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)