取消 Fetch 会导致客户端断开连接

Cancelling Fetch results in client being Disconnected

当使用 cancellationToken 取消 IMailFolder.Fetch 方法时,出现客户端断开连接的异常。

我调试了 MailKit 并将问题追溯到 ImapEngine.Iterate() 方法,其中有以下内容:

try {
            while (current.Step ()) {
                // more literal data to send...
            }

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

在捕获到每种异常类型时断开客户端连接是否正确?

这是否也适用于我们正在取消操作的情况,以便我们可以优先考虑另一个操作,并且我们不想断开连接?

如果不断开套接字,您还能如何取消正在进行的命令?