0

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 ループをループバックするイベントがトリガーされ、正常に切断されます。私はこれに間違ってアプローチしていますか? ボットをすぐに切断させるためのよりクリーンなアプローチはありますか?

4

1 に答える 1

0

これは最新のコードのバグであることが判明し、 https: //github.com/meebey/SmartIrc4net/issues/4 で meebey に確認されました。

于 2013-04-17T20:54:20.457 に答える