2010-07-30 10 views
8

El sujeto lo dice todo.¿Cómo escribo un manejador de salida para una aplicación F #?

Quiero que se ejecute algún código si mi aplicación finaliza, por ejemplo,^C.

+0

Es sólo una idea - a pesar de que estás preguntando sobre F # que probablemente podría google para el "Evento de Terminación de aplicaciones .Net" y encontrar más información en la general, cuestión de cómo manejar este tipo de problema de manera adecuada. –

Respuesta

4

Uso AppDomain.ProcessExit (http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx):

System.AppDomain.CurrentDomain.ProcessExit(fun _ -> ...) 
+1

Tal vez ProcessExit (http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx) sea más adecuado para el caso de la terminación normal del proceso. En el ejemplo de la consola sencilla System.AppDomain.CurrentDomain.ProcessExit.Add (divertido _ -> printfn "ProcessExit") System.AppDomain.CurrentDomain.DomainUnload.Add (divertido _ -> printfn "DomainUnload") emite "ProcessExit "después de la salida. – desco

+0

¡Absolutamente! ¿Cómo podría extrañarlo? –

1

Consulte el código a continuación. Para manejar Ctrl-C en una aplicación de consola, use el evento Console.CancelKeyPress.

// does not work - no exception on Ctrl-C 
//System.AppDomain.CurrentDomain.UnhandledException.Add(
// fun _ -> printfn "app is about to die") 

System.Console.CancelKeyPress.Add(
    fun _ -> printfn "app is about to die") 
printfn "starting..." 
System.Threading.Thread.Sleep(5000) // press Ctrl-C 
printfn "ended" 
+0

Tenga en cuenta que esto solo maneja la terminación^C, no la salida arbitraria del proceso. –

Cuestiones relacionadas