FileStream.EndWrite(IAsyncResult) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
비동기 쓰기 작업을 종료하고 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 = (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, CopyToAsync 및 FlushAsync 같은 새로운 비동기 메서드는 비동기 파일 작업을 보다 쉽게 구현하는 데 도움이 됩니다.
이 메서드는 EndWrite를 재정의합니다.
EndWrite는 모든 위치에서 IAsyncResult정확히 한 번 BeginWrite 호출되어야 합니다. EndWrite 는 I/O 작업이 완료될 때까지 차단됩니다.