F # Type Inference e System.Object
Domanda
Ho un problema ottenere il seguente codice funzioni.
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)
ottengo un errore, che triggerEvent è di tipo 'a -> unità invece di SendOrPostCallback. SendOrPostCallback è di tipo Object -> unità. Mi chiedo perché triggerEvent è di tipo 'a - unità> -> unità invece di oggetto. Ho esplicitamente dichiarato stato come oggetto e ancora si tratta di 'una.
Qualche suggerimento? Grazie.
Soluzione
Io non sono un esperto di threading, ma se si aspetta un PostOperationCompleted SendOrPostCallback, provare avvolgendo il triggerEvent in questo modo: sostituire
asyncContext.PostOperationCompleted(triggerEvent, null)
da
asyncContext.PostOperationCompleted(new SendOrPostCallback(triggerEvent), null)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow