0

我不知道我是否做错了什么,我正在使用 SmartThreadPool 来管理我的线程。在这种特殊情况下,我调用 SmartThreadPool 的一个实例,然后获取工作项的结果(发送电子邮件的方法)。“字符串结果”接收方法的输出。如果正常则显示正常,否则显示异常。

SmartThreadPool smartThreadPool = new SmartThreadPool();

String result = (String)smartThreadPool.QueueWorkItem(x => emailHelper.sendEmail(whichMail.Text, emailTo.Text, subject.Text, bodyMsg.Text)).Result;

if (result != "True")
    helper.showMessageBox(Properties.Resources.emailNotSent + result, "x");

else
    aux.setRadDesktop(Properties.Resources.emailSent, "", false);

问题是当我将结果转换为 String 时,它太慢了,甚至我的 UI 也暂停了 2 秒,我不知道为什么。如果我这样做忽略了工人项目的结果:

smartThreadPool.QueueWorkItem(x => emailHelper.sendEmail(whichMail.Text, emailTo.Text, subject.Text, bodyMsg.Text));

一切正常,有什么线索吗?

4

2 回答 2

1

问题不在于转换为字符串,而在于使用Result在返回值之前等待您的工作项完成的属性。

于 2013-06-24T21:43:19.263 回答
0

我最终做了一个嵌套线程,它完美无缺。谢谢大家。

于 2013-06-26T15:15:59.377 回答