MailboxProcessor和GUI Thread的交互

时间:2014-03-10 09:51:14

标签: multithreading f# mailboxprocessor

我通过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个代理人怎么办?这些引发的事件是否同步?假设我有一些长时间计算此事件的功能。我可以确定其他代理的事件处理程序是否会等待它的终止?

0 个答案:

没有答案