【发布时间】:2013-04-19 17:45:39
【问题描述】:
我正在用 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 字节。
你知道错误可能是什么吗?
【问题讨论】:
-
您的意思是“当我连接到多个一个服务器时?”
-
@Geoff 是的,对不起。我的意思是“..到多个服务器”
标签: c# winrt-async