Вывод типа F # и System.Объект
Вопрос
У меня проблема с запуском следующего кода.
open System
open System.ComponentModel
open System.Threading
let triggerEvent (state : Object) = Console.Write("Do Something.")
let asyncContext = AsyncOperationManager.CreateOperation(null)
asyncContext.PostOperationCompleted(triggerEvent, null)
Я получаю сообщение об ошибке, что triggerEvent имеет тип 'a -> unit вместо SendOrPostCallback.SendOrPostCallback имеет тип Object -> unit.Мне интересно, почему triggerEvent имеет тип 'a -> unit вместо Object -> unit.Я явно объявил состояние как объект, и все равно это 'a.
Есть какие-нибудь предложения?Спасибо.
Решение
Я не эксперт по потоковой обработке, но если PostOperationCompleted ожидает обратного вызова SendOrPostCallback , попробуйте обернуть ваш triggerEvent следующим образом:заменить
asyncContext.PostOperationCompleted(triggerEvent, null)
Автор:
asyncContext.PostOperationCompleted(new SendOrPostCallback(triggerEvent), null)
Не связан с StackOverflow