При каких условиях NetworkStream не читает сразу все данные?

В обратном вызове дляNetworkStream.BeginRead Кажется, я заметил, что все байты всегда читаются. Я вижу, как во многих руководствах проверяется, меньше ли BytesRead, чем общее количество байтов, и если да, прочитайте еще раз, но, похоже, этого никогда не происходит.

Условиеif (bytesRead < totalBytes) никогда не срабатывает, даже если за один раз отправляется много данных (тысячи символов), и даже если для размера буфера задано очень маленькое значение (16 или около того).

Я не проверял это «старомодным способом», так как я использую Task.Factory.FromAsync вместо вызова NetworkStream.BeginRead и обеспечения обратного вызова, когда я вызываю EndRead. Возможно, Задачи автоматически включают эту функцию, не возвращая, пока все данные не будут прочитаны? Я не уверен.

В любом случае, мне все еще интересно, когда все данные не будут прочитаны одновременно. Обязательно ли проверять, все ли данные прочитаны, и если да, читать снова? Кажется, я не могу получить условия, чтобы когда-либо бежать.

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос