2009-09-23 9 views
5

Non è presente alcun wrapper asincrono F # (nel PowerPack) né per TcpListener.BeginAcceptTcpClient() né per EndAcceptTcpClient().Come si scrive il proprio wrapper asincrono per TcpListener?

Come faccio a scrivere il proprio wrapper attorno a questi, in modo da poter utilizzare le parole chiave let! e ed eseguirlo in parallelo?

risposta

6

Avete controllato la funzione Async.BuildPrimitive? Penso che tu possa fare qualcosa del tipo:

type TcpListener with 
    member x.AsyncAcceptClient() = 
    Async.BuildPrimitive(x.BeginAcceptTcpClient, x.EndAcceptTcpClient) 

per creare un metodo di estensione che restituisce un risultato asincrono appropriato.

+0

Grazie, esattamente quello che stavo cercando – esac

+3

Nelle versioni recenti di F # si chiama Async.FromBeginEnd. – Govert

Problemi correlati