Я пытаюсь написать довольно простое приложение, которое передает данные между двумя сокетами. Однако я немного запутался в использовании асинхронных операций NetworkStream (BeginRead и EndRead).
Например:
while (myNetworkStream.DataAvailable)
myNetworkStream.BeginRead(mBrowserDataBuffer, 0, mBrowserDataBuffer.Length, new AsyncCallback(ProcessNetworkStreamRead), myNetworkStream);
Когда я вызываю BeginRead, метод немедленно возвращается и запускает поток для выполнения операции чтения. Однако, что в моем цикле выше, что произойдет, если BeginRead будет вызван ОПЯТЬ до завершения делегата?
По сути, я хочу, чтобы мой делегат добавлял входящие данные в больший буфер и затем обрабатывал сообщения по мере их завершения. Мне нужно использовать асинхронные операции, потому что, пока один сокет читает, я хотел бы также читать и обрабатывать из другого сокета.