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.

例外

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.

ストリームが閉じているか、内部エラーが発生しました。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のメソッドは、レガシコードをサポートするためにでも使用できます。ただし、、、 WriteAsync CopyToAsyncFlushAsyncなどの新しい非同期メソッドReadAsyncは、非同期のファイル操作をより簡単に実装するのに役立ちます。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は、からIAsyncResult BeginWriteのたびに1回だけ呼び出す必要があります。EndWrite must be called exactly once on every IAsyncResult from BeginWrite. EndWriteは、i/o 操作が完了するまでブロックされます。EndWrite will block until the I/O operation has completed.

適用対象

こちらもご覧ください