是否有可能使PostAndAsyncReply在其郵箱處理器處置(或以其他方式停止)時立即返回?或者有沒有一些「模式」/最佳做法如何安全地使用PostAndReply方法而不會造成死鎖?PostAndReply處理郵箱處理器
現在我有PostAndAsyncReply永遠不會返回郵箱處理器已被處置時返回的問題。使用超時參數不是一個選項,因爲我不能等待(除了選擇合理的超時是相當困難或不可能的,因爲它取決於太多因素)。
[<Test>]
let ``waiting for a reply from a disposed agent``() =
use server = MailboxProcessor.Start(fun inbox -> async {
()
})
(server :> System.IDisposable).Dispose()
server.PostAndReply (fun reply -> reply) // <- deadlock
|> ignore)
編輯:用我見過最MailboxProcessors例子(包括MSDN上的人。)甚至不介意處置的MailboxProcessors。而MSDN並未解釋MailboxProcessors在處置時如何反應。不需要處理它們嗎?