다음을 통해 공유


NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) 메서드

정의

NetworkStream에서 비동기 읽기를 시작합니다.

public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public:
 override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int size, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int size, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

매개 변수

buffer
Byte[]

Byte에서 읽은 데이터를 저장하기 위한 메모리 내의 위치에 해당하는 NetworkStream 형식의 배열입니다.

offset
Int32

데이터를 저장하기 시작하는 buffer 내의 위치입니다.

sizecount
Int32

NetworkStream에서 읽을 바이트 수입니다.

callback
AsyncCallback

AsyncCallback가 완료될 때 실행되는 BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) 대리자입니다.

state
Object

추가 사용자 정의 데이터가 들어 있는 개체입니다.

반환

비동기 호출을 나타내는 IAsyncResult입니다.

예외

buffer 매개 변수가 null인 경우

offset 매개 변수가 0보다 작은 경우

또는

offset 매개 변수가 buffer 매개 변수의 길이보다 큰 경우

또는

size가 0보다 작은 경우

또는

sizebuffer의 길이에서 offset 매개 변수의 값을 뺀 값보다 큰 경우

내부 Socket이 닫힌 경우

또는

네트워크에서 읽는 동안 오류가 발생한 경우

또는

소켓에 액세스할 때 오류가 발생했습니다.

설명

중요

이는 호환성 API입니다. 새 개발에 APM (시작/종료) 메서드를 사용하지 않는 것이 좋습니다. 대신 작업 기반 등가를 사용합니다.

를 구현하는 콜백을 AsyncCallbackBeginRead 전달하여 작업 완료에 대한 알림을 받을 수 있습니다. 기본 네트워크 스택이 동기적으로 작업을 완료하는 경우 콜백은 를 호출 BeginRead하는 동안 인라인으로 실행됩니다. 이 경우 반환 IAsyncResult 된 의 CompletedSynchronously 속성이 로 설정 true 되어 메서드가 동기적으로 완료되었음을 나타냅니다. 사용 하 여는 의 AsyncStateIAsyncResult 속성을 메서드에 전달 된 상태 개체를 BeginRead 가져옵니다.

메서드를 BeginRead 호출 EndRead 하여 작업을 완료해야 합니다. 일반적으로 메서드는 제공된 대리자에서 호출됩니다 AsyncCallback . EndRead 는 작업이 완료될 때까지 호출 스레드를 차단합니다.

작업은 매개 변수에 지정된 size 바이트 수까지 사용 가능한 만큼의 데이터를 읽습니다.

참고

를 수신하는 IOException경우 속성을 검사 InnerException 속성이 로 SocketException인해 발생했는지 확인합니다. 그렇다면 속성을 사용하여 ErrorCode 특정 오류 코드를 가져옵니다.

읽기 및 쓰기 작업은 동기화할 필요 없이 클래스의 NetworkStream instance 동시에 수행할 수 있습니다. 쓰기 작업에 고유한 스레드가 하나 있고 읽기 작업에 고유한 스레드가 하나 있는 한 읽기 및 쓰기 스레드 간에 교차 간섭이 없고 동기화가 필요하지 않습니다.

적용 대상

추가 정보