2

次のコードを機能させるのに問題があります。

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 なのか疑問に思っています。state を Object として明示的に宣言しましたが、それでも 'a.

助言がありますか?ありがとうございました。

4

1 に答える 1

2

私はスレッド化の専門家ではありませんが、PostOperationCompleted が SendOrPostCallback を期待している場合は、triggerEvent を次のようにラップしてみてください。

asyncContext.PostOperationCompleted(triggerEvent, null)

asyncContext.PostOperationCompleted(new SendOrPostCallback(triggerEvent), null)
于 2009-12-29T13:19:26.770 に答える