FileStream.EndWrite(IAsyncResult) FileStream.EndWrite(IAsyncResult) FileStream.EndWrite(IAsyncResult) FileStream.EndWrite(IAsyncResult) Method

定义

结束异步写入操作,在 I/O 操作完成之前一直阻止。Ends an asynchronous write operation and blocks until the I/O operation is complete. (请考虑改用 WriteAsync(Byte[], Int32, Int32, CancellationToken)。)(Consider using WriteAsync(Byte[], Int32, Int32, CancellationToken) instead.)

public:
 override void EndWrite(IAsyncResult ^ asyncResult);
public override void EndWrite (IAsyncResult asyncResult);
override this.EndWrite : IAsyncResult -> unit
Public Overrides Sub EndWrite (asyncResult As IAsyncResult)

参数

asyncResult
IAsyncResult IAsyncResult IAsyncResult IAsyncResult

挂起的异步 I/O 请求。The pending asynchronous I/O request.

异常

流已关闭或出现了内部错误。The stream is closed or an internal error has occurred.

示例

此代码示例是为FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean)构造函数提供的更大示例的一部分。This code example is part of a larger example provided for the FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) constructor.

   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.
}
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

注解

在 .NET Framework 4 及更早版本中, 必须使用方法 ( BeginWrite如和EndWrite ) 来实现异步文件操作。In the .NET Framework 4 and earlier versions, you have to use methods such as BeginWrite and EndWrite to implement asynchronous file operations. .NET Framework 4.5.NET Framework 4.5这些方法在中仍可用以支持旧版代码; 但是,新的异步方法( ReadAsync如、 WriteAsync CopyToAsync、和FlushAsync)可帮助你更轻松地实现异步文件操作。These methods are still available in the .NET Framework 4.5.NET Framework 4.5 to support legacy code; however, the new async methods, such as ReadAsync, WriteAsync, CopyToAsync, and FlushAsync, help you implement asynchronous file operations more easily.

此方法重写 EndWriteThis method overrides EndWrite.

EndWrite必须对每个IAsyncResultBeginWrite只调用一次。EndWrite must be called exactly once on every IAsyncResult from BeginWrite. EndWrite在 i/o 操作完成之前, 将一直阻止。EndWrite will block until the I/O operation has completed.

适用于

另请参阅