다음을 통해 공유


FileStream.EndWrite(IAsyncResult) 메서드

정의

비동기 쓰기 작업을 종료하고 I/O 작업이 완료될 때까지 차단시킵니다. 대신 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)

매개 변수

asyncResult
IAsyncResult

보류 중인 비동기 I/O 요청입니다.

예외

asyncResult이(가) null인 경우

IAsyncResult 개체는 이 클래스에 대해 BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 를 호출하여 만들어진 개체가 아닙니다.

EndWrite(IAsyncResult) 가 여러 번 호출됩니다.

스트림이 닫혔거나 내부 오류가 발생했습니다.

예제

이 코드 예제는에 대해 제공 된 큰 예제의 일부는 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 생성자입니다.

   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

설명

.NET Framework 4 이전 버전에서는 및 EndWrite 와 같은 BeginWrite 메서드를 사용하여 비동기 파일 작업을 구현해야 합니다. 이러한 메서드는 레거시 코드를 지원하기 위해 .NET Framework 4.5에서 계속 사용할 수 있지만 , , WriteAsyncCopyToAsync및 와 FlushAsync같은 ReadAsync새로운 비동기 메서드는 비동기 파일 작업을 보다 쉽게 구현하는 데 도움이 됩니다.

이 메서드는 EndWrite를 재정의합니다.

EndWrite는 에서 BeginWrite모든 IAsyncResult 에서 정확히 한 번 호출되어야 합니다. EndWrite 는 I/O 작업이 완료될 때까지 차단됩니다.

적용 대상

추가 정보