2009-12-29 5 views
2

다음 코드가 작동하는 데 문제가 있습니다.F # 유추 추론 및 System.Object

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는 SendOrPostCallback 대신 'a -> unit'유형입니다. SendOrPostCallback은 Object -> unit 유형입니다. 왜 triggerEvent가 Object -> unit 대신 'a -> unit'유형인지 궁금합니다. 나는 명시 적으로 상태를 Object로 선언했지만 여전히 'a.

제안 사항? 고맙습니다.

답변

2

내가 스레딩에 대한 전문가는 아니지만 PostOperationCompleted은 SendOrPostCallback을 기대하는 경우,이처럼는, triggerEvent를 포장하려고 : 이

asyncContext.PostOperationCompleted(new SendOrPostCallback(triggerEvent), null) 
+0

이 감사에 의해

asyncContext.PostOperationCompleted(triggerEvent, null) 

교체! 그게 내가 찾고 있던거야. – PetPaulsen