При каких условиях NetworkStream не читает сразу все данные?
В обратном вызове дляNetworkStream.BeginRead
Кажется, я заметил, что все байты всегда читаются. Я вижу, как во многих руководствах проверяется, меньше ли BytesRead, чем общее количество байтов, и если да, прочитайте еще раз, но, похоже, этого никогда не происходит.
Условиеif (bytesRead < totalBytes)
никогда не срабатывает, даже если за один раз отправляется много данных (тысячи символов), и даже если для размера буфера задано очень маленькое значение (16 или около того).
Я не проверял это «старомодным способом», так как я использую Task.Factory.FromAsync вместо вызова NetworkStream.BeginRead и обеспечения обратного вызова, когда я вызываю EndRead. Возможно, Задачи автоматически включают эту функцию, не возвращая, пока все данные не будут прочитаны? Я не уверен.
В любом случае, мне все еще интересно, когда все данные не будут прочитаны одновременно. Обязательно ли проверять, все ли данные прочитаны, и если да, читать снова? Кажется, я не могу получить условия, чтобы когда-либо бежать.
Благодарю.