2013-04-17 33 views
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循環,然後成功斷開連接。 我正在接近這個不正確嗎?有沒有一種更清晰的方法讓機器人立即斷開連接?

回答

相關問題