smartirc4net永远监听,无法退出线程

时间:2013-04-17 15:31:18

标签: c# .net multithreading irc

我有一个使用smartirc4net库的IRC机器人。我遇到了机器人正在侦听命令的问题,我希望它运行的线程退出。 Listen()命令永远阻塞。如果我使用ListenOnce()我可以将调用置于While(!ShouldExit)循环内,但我必须等待机器人触发ListenOnce()

    protected void irc_OnConnected(object sender, EventArgs e)
    {
        irc.Login(configuration.IRCNick, configuration.IRCNick);

        while (!_shouldDisconnect)
        {
            irc.ListenOnce();
        }

        irc.Disconnect();
    }

作为一种解决方法,当机器人从父线程发出断开连接命令时,它会向自己发送一条消息:

    /// <summary>
    /// Used by the parent thread to disconnect the bot
    /// </summary>
    /// <returns></returns>
    public void Disconnect()
    {
        _shouldDisconnect = true;

        irc.SendMessage(SendType.Message, irc.Nickname, "EXIT YOU STUPID BOT");
    }

这会触发ListenOnce()事件循环回while循环,然后成功断开连接。 我接近这个错误吗?是否有更清洁的方法让机器人立即断开连接?

1 个答案:

答案 0 :(得分:0)

发现这是最新代码中的错误,在https://github.com/meebey/SmartIrc4net/issues/4

与meebey确认