FileStream.EndWrite(IAsyncResult) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Termina uma operação de escrita assíncrona e bloqueia até que a operação de E/S esteja completa. (Considere usar WriteAsync(Byte[], Int32, Int32, CancellationToken) em vez disso.)
public:
override void EndWrite(IAsyncResult ^ asyncResult);
public override void EndWrite(IAsyncResult asyncResult);
override this.EndWrite : IAsyncResult -> unit
Public Overrides Sub EndWrite (asyncResult As IAsyncResult)
Parâmetros
- asyncResult
- IAsyncResult
O pedido pendente de E/S assíncrono.
Exceções
asyncResult é null.
Este IAsyncResult objeto não foi criado ao invocar BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) esta classe.
EndWrite(IAsyncResult) é chamada várias vezes.
O fluxo está encerrado ou ocorreu um erro interno.
Exemplos
Este exemplo de código faz parte de um exemplo maior fornecido ao FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) construtor.
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
Observações
No .NET Framework 4 e versões anteriores, é necessário usar métodos como BeginWrite e EndWrite para implementar operações de ficheiros assíncronas. Estes métodos ainda estão disponíveis no .NET Framework 4.5 para suportar código legado; no entanto, os novos métodos assíncronos, como ReadAsync, WriteAsync, CopyToAsync e FlushAsync, ajudam a implementar operações de ficheiros assíncronas de forma mais fácil.
Este método substitui o EndWrite.
EndWrite deve ser chamado exatamente uma vez em cada IAsyncResult a partir de BeginWrite. EndWrite irá bloquear até que a operação de E/S esteja concluída.