Attenzione, Javascript è disabilitato! Il sito funziona meglio se è attivo!

Il logo di Imagine Software

RestartOnCrash

Riavvia le applicazioni che crashano

RestartOnCrash è una semplice applicazione .NET Core, open 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 attiva, nonostante 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.

Uno screenshot dei log che RestartOnCrash scrive nell'EventViewer

Un log di riavvio che RestartOnCrash scrive nell'EventViewer

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ù.

Spesso ci si ultra ingegna
per risolvere problemi
la cui soluzione è banale.

Configurare RestartOnCrash

Tutto quello che serve è configurare il file configuration.json

  • PathToApplicationToMonitor: indica il percorso dell'applicazione da monitorare. Al momento gestisce una sola applicazione
  • CheckInterval: è un TimeSpan serializzato. Rappresenta la frequenza con cui RestartOnCrash controlla lo stato dell'applicazione
  • StartApplicationOnlyAfterFirstExecution: se false, quando RestartOnCrash si avvia per la prima volta, avvia anche l'applicazione monitorata; se true attende che l'applicazione monitorata sia in esecuzione per agganciarsi al suo processo

RestartOnCrash in azione

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.