FileStream.EndWrite(IAsyncResult) メソッド

定義

非同期の書き込み操作を終了し、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

保留中の非同期 I/O 要求。The pending asynchronous I/O request.

例外

asyncResultnull です。asyncResult is null.

この IAsyncResult オブジェクトは、このクラスで BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) を呼び出すことによって作成されませんでした。This IAsyncResult object was not created by calling BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) on this class.

EndWrite(IAsyncResult) は複数回呼び出されます。EndWrite(IAsyncResult) is called multiple times.

ストリームが閉じているか、内部エラーが発生しました。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 以前のバージョンでは、BeginWriteEndWrite などのメソッドを使用して、非同期ファイル操作を実装する必要があります。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 で引き続き使用できます。ただし、ReadAsyncWriteAsyncCopyToAsyncFlushAsyncなどの新しい非同期メソッドを使用すると、非同期のファイル操作をより簡単に実装できます。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.

このメソッドは、EndWrite をオーバーライドします。This method overrides EndWrite.

EndWrite は、BeginWriteからのすべての IAsyncResult で1回だけ呼び出す必要があります。EndWrite must be called exactly once on every IAsyncResult from BeginWrite. i/o 操作が完了するまで、EndWrite はブロックされます。EndWrite will block until the I/O operation has completed.

適用対象

こちらもご覧ください