2010-07-30 30 views
8

Chủ đề nói tất cả.Làm cách nào để viết trình xử lý thoát cho ứng dụng F #?

Tôi muốn một số mã chạy nếu ứng dụng của tôi bị chấm dứt bởi, ví dụ:^C.

+0

Chỉ cần một ý nghĩ - mặc dù bạn đang hỏi về F # có lẽ bạn có thể google cho "Net Application Chấm dứt tổ chức sự kiện" và tìm thêm thông tin về chung câu hỏi về cách xử lý loại vấn đề này đúng cách. –

Trả lời

4

Sử dụng AppDomain.ProcessExit (http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx):

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

Có lẽ ProcessExit (http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx) sẽ phù hợp hơn cho trường hợp chấm dứt quá trình bình thường. Trong giao diện điều khiển đơn giản ví dụ System.AppDomain.CurrentDomain.ProcessExit.Add (vui vẻ _ -> printfn "ProcessExit") System.AppDomain.CurrentDomain.DomainUnload.Add (vui vẻ _ -> printfn "DomainUnload") nó xuất ra "ProcessExit "sau khi thoát. – desco

+0

Tuyệt đối! Làm thế nào tôi có thể bỏ lỡ nó? –

1

Xem mã bên dưới. Để xử lý Ctrl-C trong ứng dụng bảng điều khiển, hãy sử dụng sự kiện 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

Lưu ý rằng điều này chỉ xử lý^C chấm dứt, không thoát khỏi quá trình tùy ý. –

Các vấn đề liên quan