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 агентов? Синхронизированы ли эти вызванные события? Предположим, у меня есть долгое время функция вычисления для этого события. Могу ли я быть уверен, что обработчики событий других агентов будут ожидать его завершения?