2

我通过 SynchronizationContext 创建了一个与 GUI 交互的代理:

type AsyncWorker(id:int) =
    let someEvent = new Event<int * string>()
    let errorEvent = new Event<_>()
    let syncContext = SynchronizationContext.Current

    let f (inbox: MailboxProcessor<_>)  = 
        let rec loop () = async {        
            let! message = inbox.Receive ()
            ...
            syncContext.RaiseEvent someEvent (id, str)
        }

那有什么危险吗?如果我有 20 个代理怎么办?这些引发的事件是否同步?假设我对此事件有一些长时间的计算功能。我可以确定其他代理的事件处理程序将等待其终止吗?

4

0 回答 0