考慮這個簡單的代碼:Stream.Read何時返回?
public void TransferStream(Stream source, Stream target)
{
Int32 read = -1;
Byte[] buffer = new Byte[4096];
do
{
read = source.Read(buffer, 0, buffer.Length);
target.Write(buffer, 0, read);
}
while (read != 0);
}
試想一下,source
是NetworkStream
,信息是通過一點一點到達。 source.Read
可以返回一個完整的緩衝區,或者與一個部分,read
會告訴讀了多少。
如果沒有足夠的數據填充緩衝區,source.Read
何時會返回?何時足夠用部分緩衝區返回?
對,我讀到了,但我認爲如果它是一個慢速連接,它將不太可能通過'Byte'返回'Byte'。但也許這就是它的真正作用。 – vtortola
@vtortola我想你必須看看源代碼或測試它,當然。 –
我只看了一下http://msdn.microsoft.com/en-us/library/windows/desktop/ms740121(v=vs.85).aspx,但找不到任何關於它的信息。 – vtortola