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();
}
, 그것 자체가 메시지를 전송 , 연결을 해제하십시오. 내가 잘못 접근하고 있습니까? 봇이 즉시 연결 해제되도록하는 더 명확한 접근법이 있습니까?