2013-04-17 1 views
0

smartirc4net 라이브러리를 사용하는 IRC 봇이 있습니다. 나는 봇이 명령을 듣고있는 곳으로 가서 그 스레드가 나가기를 원한다. Listen() 명령은 영원히 차단됩니다. ListenOnce()을 사용하면 While(!ShouldExit) 루프 내에서 전화를 걸 수 있지만, 로봇을 무언가를 위해 ListenOnce()을 트리거 할 때까지 기다려야합니다. 다시 while 루프를 통해smartirc4net은 영원히 청취하고 스레드를 종료 할 수 없습니다.

/// <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() 이벤트를 트리거 : 봇은 부모 스레드에서 연결 해제 명령을 발행 주변의 작업으로

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

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

     irc.Disconnect(); 
    } 

, 그것 자체가 메시지를 전송 , 연결을 해제하십시오. 내가 잘못 접근하고 있습니까? 봇이 즉시 연결 해제되도록하는 더 명확한 접근법이 있습니까?

답변