0
我有一個使用smartirc4net庫的IRC bot。我遇到了一個bot正在偵聽命令的問題,並且我想讓它運行的線程退出。 Listen()
命令永遠阻止。如果我使用ListenOnce()
,我可以將呼叫放入While(!ShouldExit)
循環中,但我必須等待機器人才能觸發ListenOnce()
。smartirc4net永遠聽,不能退出線程
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循環,然後成功斷開連接。 我正在接近這個不正確嗎?有沒有一種更清晰的方法讓機器人立即斷開連接?