Smartirc4net永远监听,不能退出线程

本文关键字:退出 线程 不能 永远 监听 Smartirc4net | 更新日期: 2023-09-27 18:09:46

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

    protected void irc_OnConnected(object sender, EventArgs e)
    {
        irc.Login(configuration.IRCNick, configuration.IRCNick);
        while (!_shouldDisconnect)
        {
            irc.ListenOnce();
        }
        irc.Disconnect();
    }
作为一种解决方法,当bot从父线程发出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循环回圈,然后成功断开连接。我是不是写错了?是否有更干净的方法让机器人立即断开连接?

Smartirc4net永远监听,不能退出线程

发现这是最新代码中的一个bug,在https://github.com/meebey/SmartIrc4net/issues/4上与meebey确认