FileStream.EndWrite(IAsyncResult) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Termina un'operazione di scrittura asincrona, rimanendo bloccato fino al completamento dell'operazione di I/O. Si consiglia di usare WriteAsync(Byte[], Int32, Int32, CancellationToken).
public:
override void EndWrite(IAsyncResult ^ asyncResult);
public override void EndWrite (IAsyncResult asyncResult);
override this.EndWrite : IAsyncResult -> unit
Public Overrides Sub EndWrite (asyncResult As IAsyncResult)
Parametri
- asyncResult
- IAsyncResult
Richiesta di I/O asincrona in sospeso.
Eccezioni
asyncResult
è null
.
L'oggetto IAsyncResult non è stato creato chiamando BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) in questa classe.
EndWrite(IAsyncResult) viene chiamato più volte.
Il flusso è chiuso o si è verificato un errore interno.
Esempio
Questo esempio di codice fa parte di un esempio più ampio fornito per il FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) costruttore.
static void EndWriteCallback( IAsyncResult^ asyncResult )
{
State^ tempState = dynamic_cast<State^>(asyncResult->AsyncState);
FileStream^ fStream = tempState->FStream;
fStream->EndWrite( asyncResult );
// Asynchronously read back the written data.
fStream->Position = 0;
asyncResult = fStream->BeginRead( tempState->ReadArray, 0, tempState->ReadArray->Length, gcnew AsyncCallback( &FStream::EndReadCallback ), tempState );
// Concurrently do other work, such as
// logging the write operation.
}
};
static void EndWriteCallback(IAsyncResult asyncResult)
{
State tempState = (State)asyncResult.AsyncState;
FileStream fStream = tempState.FStream;
fStream.EndWrite(asyncResult);
// Asynchronously read back the written data.
fStream.Position = 0;
asyncResult = fStream.BeginRead(
tempState.ReadArray, 0 , tempState.ReadArray.Length,
new AsyncCallback(EndReadCallback), tempState);
// Concurrently do other work, such as
// logging the write operation.
}
let endWriteCallback (asyncResult: IAsyncResult) =
let tempState = asyncResult.AsyncState :?> State
let fStream = tempState.FStream
fStream.EndWrite asyncResult
// Asynchronously read back the written data.
fStream.Position <- 0
let asyncResult =
fStream.BeginRead(tempState.ReadArray, 0, tempState.ReadArray.Length, AsyncCallback endReadCallback, tempState)
// Concurrently do other work, such as
// logging the write operation.
()
Private Shared Sub EndWriteCallback(asyncResult As IAsyncResult)
Dim tempState As State = _
DirectCast(asyncResult.AsyncState, State)
Dim fStream As FileStream = tempState.FStream
fStream.EndWrite(asyncResult)
' Asynchronously read back the written data.
fStream.Position = 0
asyncResult = fStream.BeginRead( _
tempState.ReadArray, 0 , tempState.ReadArray.Length, _
AddressOf EndReadCallback, tempState)
' Concurrently do other work, such as
' logging the write operation.
End Sub
Commenti
In .NET Framework 4 e versioni precedenti è necessario usare metodi come BeginWrite e EndWrite per implementare operazioni di file asincrone. Questi metodi sono ancora disponibili in .NET Framework 4.5 per supportare il codice legacy; Tuttavia, i nuovi metodi asincroni, ad esempio ReadAsync, CopyToAsyncWriteAsync, e FlushAsync, consentono di implementare più facilmente le operazioni asincrone sui file.
Questo metodo esegue l'override di EndWrite.
EndWrite deve essere chiamato esattamente una volta su ogni IAsyncResult da BeginWrite. EndWrite verrà bloccato fino al completamento dell'operazione di I/O.