在线程中使用MailKit的ImapClient时出错

时间:2018-12-11 18:10:48

标签: c# mailkit

我正在使用MailKit库每隔x秒钟的时间保存新收到的电子邮件中的附件。我需要在单独的线程上运行此过程,以便它不会阻塞我的UI。 每当我的代码进入ImapClient实例化时,它都会引发错误:“线程被中止。”

ExceptionState:“由于代码已优化或本机框架位于调用堆栈的顶部,因此无法评估表达式。”

堆栈跟踪:

at MailKit.MailService..ctor(IProtocolLogger protocolLogger)

at MailKit.Net.Imap.ImapClient..ctor(IProtocolLogger protocolLogger)

at MailKit.Net.Imap.ImapClient..ctor()

at Domain.ApInvoicePrinting.<>c.<Run>b__4_0() in C:\...\MyClass.cs:line 29

enter image description here

代码:

var task = new Task(() => 
{
   try
   {
       using (var client = new MailKit.Net.Imap.ImapClient()) // Exception thrown at this line
       {
          ...
       }

    }
    catch(Exception e)
    {
       ...
    } 
}

task.Start();

我尝试使用System.Threading.Timer运行它,但仍然收到相同的错误。但是,在主线程上一切正常。 我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

事实证明,问题出在使用MS Test的单元测试项目中运行该代码。当我使用Console App运行完全相同的代码时,一切正常!不过,我不确定其背后的原因是什么。