我正在使用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
代码:
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运行它,但仍然收到相同的错误。但是,在主线程上一切正常。 我在这里想念什么?
答案 0 :(得分:0)
事实证明,问题出在使用MS Test的单元测试项目中运行该代码。当我使用Console App运行完全相同的代码时,一切正常!不过,我不确定其背后的原因是什么。