F#Type Inference和System.Object

时间:2009-12-29 11:02:54

标签: f# object types inference

我在使用以下代码时遇到问题。

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 - >单位而不是SendOrPostCallback。 SendOrPostCallback的类型为Object - >单元。我想知道为什么triggerEvent是'a - >类型单位代替对象 - >单元。我明确地将state声明为Object,但仍然是'a。

有什么建议吗?谢谢。

1 个答案:

答案 0 :(得分:2)

我不是线程专家,但如果PostOperationCompleted需要SendOrPostCallback,请尝试包装您的triggerEvent,如下所示: 替换

asyncContext.PostOperationCompleted(triggerEvent, null)

通过

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