2017-11-28 15 views
0

IMailFolder.Fetch 메서드를 cancellationToken으로 취소하면 클라이언트 연결이 끊어지는 예외가 발생합니다. 클라이언트가 연결이 끊어짐에 따라 반입 결과가 취소됨

나는 MailKit을 디버깅하고이 다음 위치를 ImapEngine.Iterate() 방법으로 문제를 추적 :
try { 
      while (current.Step()) { 
       // more literal data to send... 
      } 

      if (current.Bye) 
       Disconnect(); 
     } catch { 
      Disconnect(); 
      throw; 
     } finally { 
      current = null; 
     } 

는 모든 예외 유형의 클라이언트 연결을 해제 할 수있는 권리 접근 방식이

을 붙 잡히기?

작업을 취소 할 때도 마찬가지이므로 다른 작업의 우선 순위를 지정할 수 있으며 연결을 끊지 않으시겠습니까?

답변

1

소켓을 연결 해제하지 않으면 진행중인 명령을 어떻게 취소 하시겠습니까?

+0

네 말이 맞아, 나는 그 코드에 깊이 빠져들지 않았을거야. 그래서이 경우 서버에 수동으로 다시 연결해야합니까? – Nevca

+0

수정하십시오. 그러나 ProtocolException을 얻은 후에 IsConnected 상태를 확인하십시오. IOException는 항상 disconnected를 의미합니다. – jstedfast