コンソールアプリケーションが終了したときに特定の関数を実行したいと思います。私は多くの解決策を見つけましたが、どれも私のために働いていません。次のコードでCancelKeyPressなどが表示されないのはなぜですか?コンソールをonExitイベントを使ってF#
printfn "Starting a Test"
System.Console.ReadLine() |> ignore
System.Console.CancelKeyPress.Add (fun _ -> printfn "CancelKeyPress")
System.AppDomain.CurrentDomain.ProcessExit.Add (fun _ -> printfn "ProcessExit")
System.AppDomain.CurrentDomain.DomainUnload.Add (fun _ -> printfn "DomainUnload")
私は自分のコードを少し修正してtry finallyステートメントを追加しましたが、幸運はありません。私は、アプリケーションを実行し、「Ctrl + C」を押すか、私はあなたの例を実行すると1が動作するように、それは、「ProcessExit」を印刷し
let write v = System.IO.File.AppendAllText("test.txt", v + "\n")
try
write "Starting a Test 2"
System.Console.ReadLine() |> ignore
System.Console.CancelKeyPress.Add (fun _ -> write "CancelKeyPress")
System.AppDomain.CurrentDomain.ProcessExit.Add (fun _ -> write "ProcessExit")
System.AppDomain.CurrentDomain.DomainUnload.Add (fun _ -> write "DomainUnload")
finally
write "Try Finally"
こんにちは、提案していただきありがとうございますが、動作していないようです。私の最初の投稿を参照してください –
ありがとうreadLineの問題を指摘してください。それは私のコードで間違っていたものです。私は最初にProcess.WaitForExit()を呼び出し、その時だけハンドラを登録していました:) –