我有一个连接到IRC频道并使用StreamReader读取聊天的机器人。一切正常,机器人可以读取和响应,但问题是当StreamReader处于活动状态时,Windows窗体处于冻结状态。
while(true)
{
string message = irc.readMessage();
if (message.Contains("!test"))
{
irc.sentChatMessage("answer");
}
}
我尝试将它放在一个计时器上,而不是每隔100毫秒没有变化的while循环。
方法
public string readMessage()
{
string message = inputStream.ReadLine();
return message;
}
答案 0 :(得分:2)
这是因为 var timeoutId = setTimeout(function () {
deferred.reject(new Error(message || "Timed out after " + ms + " ms"));
}, 15000);
阻止了UI线程。如果使用异步重载inputStream.ReadLine();
,则它将异步运行,因此不会阻止UI线程。
<强>示例:强>
StreamReader.ReadLineAsync
您可以找到更多信息以及有关异步的样本并等待here。