2010-07-30 129 views
8

主題說這一切。如何爲F#應用程序編寫退出處理程序?

我想要一些代碼來運行,如果我的應用程序被終止,比如^ C。

+0

只是一個想法 - 雖然你問F#你很可能在谷歌的「NET應用程序終止事件」,並找到一般的更多信息如何正確處理這類問題的問題。 – 2010-07-30 12:46:02

回答

4

使用AppDomain.ProcessExithttp://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx):

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

也許ProcessExit(http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx)將更適合正常進程終止的情況。在簡單控制檯示例 System.AppDomain.CurrentDomain.ProcessExit.Add(fun _ - > printfn「ProcessExit」) System.AppDomain.CurrentDomain.DomainUnload.Add(fun_ - > printfn「DomainUnload」) 它輸出「ProcessExit 「退出後。 – desco 2010-07-30 08:44:01

+0

絕對!我怎麼會錯過它? – 2010-07-30 20:49:08

1

查看下面的代碼。要在控制檯應用程序中處理Ctrl-C,請使用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

請注意,這隻能處理^ C終止,而不是任意處理退出。 – 2010-07-30 06:48:13