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 요청입니다.

예외

asyncResultnull입니다.

이 클래스를 호출 IAsyncResult 하여 이 BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) 개체를 만들지 않았습니다.

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

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

예제

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

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 및 이전 버전에서는 비동기 파일 작업과 BeginWrite 같은 EndWrite 메서드를 사용하고 구현해야 합니다. 이러한 메서드는 레거시 코드를 지원하기 위해 .NET Framework 4.5에서 계속 사용할 수 있지만 ReadAsync, WriteAsync, CopyToAsyncFlushAsync 같은 새로운 비동기 메서드는 비동기 파일 작업을 보다 쉽게 구현하는 데 도움이 됩니다.

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

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

적용 대상

추가 정보