2017-11-28 8 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は常に切断されたことを意味します。 – jstedfast

関連する問題