MailboxProcessor и взаимодействие с GUI Thread

Я создал агент, взаимодействующий с GUI с помощью SynchronizationContext:

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 ответов

Другие вопросы по тегам