运行StreamReader会使应用程序无响应

时间:2016-06-16 21:34:13

标签: c# visual-studio-2015 streamreader irc

我有一个连接到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;
    }

1 个答案:

答案 0 :(得分:2)

这是因为 var timeoutId = setTimeout(function () { deferred.reject(new Error(message || "Timed out after " + ms + " ms")); }, 15000);阻止了UI线程。如果使用异步重载inputStream.ReadLine();,则它将异步运行,因此不会阻止UI线程。

<强>示例:

StreamReader.ReadLineAsync

您可以找到更多信息以及有关异步的样本并等待here