2010-08-20 12 views
5

Sto lavorando vecchio codice F # da Expert F #. Tuttavia, l'esempio non crea più. Le due chiamate seguenti non sembrano esistere:F # AsyncWaitOne e AsyncReadToEnd

semaphore.AsyncWaitOne(?millisecondsTimeout=timeout) 

e

reader.ReadToEndAsync() 

Qualcuno sa che questi sono stati sostituiti con o se mi manca solo un punto di riferimento?

risposta

6

Si chiama ora Async.AwaitWaitHandle.

AsyncReadToEnd è nella F # PowerPack.

+0

Il metodo di estensione 'AsyncReadToEnd' è scomparso dalle ultime versioni di PowerPack. Vedi http://stackoverflow.com/a/23293624/1480391 –

0

1) AsyncWaitOne è ora chiamato Async.AwaitWaitHandle.

2) il metodo di estensione AsyncReadToEnd() non esiste più nello FSharp.PowerPack. È stato sostituito con il tipo dedicato AsyncStreamReader contenente corretta esecuzione asincrona di flusso lettura (come ReadToEnd, ReadLine, ecc)

Può essere usato così:

async { 
    use asyncReader = new AsyncStreamReader(stream) 
    return! asyncReader.ReadToEnd() } 

Nota: Una volta hai installato FSharp.PowerPack, il tipo AsyncStreamReader sarà 'iniettato' nello spazio dei nomi Microsoft.FSharp.Control

1

Ormai, il progetto FSharp PowerPack è stato b roken up in moduli più piccoli per qualsiasi ulteriore sviluppo. In particolare, la classe AsyncStreamReader ei metodi di estensione per la lettura da uno StreamReader, WebClient, ecc. Il nuovo progetto è FSharpx.Async.