追查我有以下代碼(_ns
是的NetworkStream)ReadAsync退出,沒能在調試
await GetResponse(_ns);
btnSend.Enabled = true;
private async Task GetResponse(NetworkStream stream)
{
while (true)
{
var readBuffer = new byte[4096];
var asyncReader = await stream.ReadAsync(readBuffer, 0, readBuffer.Length);
txtBoxMessagesIn.Text += Encoding.ASCII.GetString(readBuffer.ToArray()) + Environment.NewLine;
if (asyncReader <= 0) break;
}
}
我似乎充滿了我所期望的整個緩衝區,但從未啓用btnSend。當我在調試模式下運行它時,我的while循環運行了幾次,我看到asyncReader
被設置爲不同的值,但它不會等於0,因爲我期望它會中斷循環,它只是退出在線:
var asyncReader = await stream.ReadAsync(readBuffer, 0, readBuffer.Length);
沒有產生任何錯誤。這是什麼造成的?我是否需要在Visual Studio中設置某些內容以打破此類錯誤?
非相關錯誤:'readBuffer'已經是一個數組,你不需要調用'readBuffer.ToArray()',但是你應該在那裏使用'asyncReader'的值。 –
在嘗試提取內容之前,可能與您的問題無關,但不應該測試'if asyncReader <= 0)嗎? –
'NetworkStream'不像其他流。你不能以這種方式使用它。 –