Il logo di Imagine Software

RestartOnCrash

Riavvia le applicazioni che crashano!

RestartOnCrash è una semplice applicazione .NET Coreopen source e scritta in C# che mira a risolvere il problema di un’applicazione per Windows che cessa di funzionare per problemi che non puoi gestire dall’interno. Semplicemente riavvia l’applicazione crashata.

In passato mi è capitato di aver dovuto utilizzare un software di terze parti con un bug relativo alla gestione della memoria, un memory leak: dopo due giorni di esecuzione la memoria riservata dall’applicazione arrivava al 100% e Windows uccideva il processo per preservare le risorse. Nel mio contesto avevo la necessità di mantenere l’applicazione sempre attivanonostante tutto.

Non avendo accesso al codice sorgente in questione, ho dovuto arrangiarmi con una soluzione esterna, ed ho sviluppato RestartOnCrash.

RestartOnCrash sorveglia un particolare processo e lo riavvia se questo non è più in esecuzione.

Ogni volta che esegue un’operazione, scrive un evento nell’EventViewer di Windows con i log del monitoraggio, per tracciare con precisione ogni crash e riavvio.

restart-on-crash-event-viewer

Nel mio caso - per gestire eventuali riavvii della macchina stessa dovuti ad aggiornamenti automatici, blackout, intervento umano - ho posto sia RestartOnCrash che l’applicazione da monitorare allo startup di Windows, così da non pensarci più.

Configurare RestartOnCrash

Tutto quello che serve è configurare il file configuration.json

{
    "PathToApplicationToMonitor": "C:\Program Files (x86)\AnApplicationThatMayCrash.exe",
    "CheckInterval": "00:00:10",
    "StartApplicationOnlyAfterFirstExecution": true
}

restart-on-crash-video

Contribuire

Il mondo dell’open source è meraviglioso proprio perché ognuno può dare il proprio contributo ed aiutare chissà chi nel mondo!

Il codice di RestartOnCrash è interamente open source su GitHub ed è aperta alla collaborazione da parte di tutti. Poco tempo fa ho ricevuto una pull request molto gradita dove veniva impostata una notifica di sistema in seguito al riavvio delle applicazioni gestite.