我正在用 C# 在 WinRT 上编写一个客户端应用程序,它通过 TCP 连接到多个服务器。对于 TCP 连接,我使用 StreamSocket。然后将输入和输出字符串包装在 DataWriter 和 DataReader 中。当我连接到多个服务器时,出现以下异常:“操作标识符无效”
这是该方法的代码:
private async void read()
{
while (true)
{
uint bytesRead = 0;
try
{
bytesRead = await reader.LoadAsync(receiveBufferSize);
if (bytesRead == 0)
{
OnClientDisconnected(this);
return;
}
byte[] data = new byte[bytesRead];
reader.ReadBytes(data);
if (reader.UnconsumedBufferLength > 0)
{
throw new Exception();
}
OnDataRead(this, data);
}
catch (Exception ex)
{
if (Error != null)
Error(this, ex);
}
new System.Threading.ManualResetEvent(false).WaitOne(10);
}
}
Stacktrace 仅将 reader.LoadAsync(UInt32 count) 方法显示为问题的根源。每个 ClientInstance 都在自己的任务中运行,并拥有自己的 DataReader 和 Stream 实例。“receiveBufferSize”为 8192 字节。
你知道错误可能是什么吗?