【问题标题】:Sending Email Asynchronously inside a SharePoint workflow在 SharePoint 工作流中异步发送电子邮件
【发布时间】:2010-06-10 11:24:59
【问题描述】:

我在 SharePoint 工作流中遇到了一个奇怪的线程问题,我想了解更多信息。我正在尝试通过启动一个新线程来异步使用 SPUtility.SendEmail 发送电子邮件。这在摘要电子邮件的工作流程结束时成功运行。我尝试做同样的事情来替换任务通知电子邮件,但最终收到以下错误:

Microsoft.SharePoint.SPException: 尝试拨打的电话超过 一个线程处于单线程模式。

我能想到的唯一区别是该任务位于复制活动中,因此它可以创建其中几个任务(尽管测试它只创建一个)。当我尝试生成新线程时,可能导致此错误的幕后复制活动具体是什么?

[注意] 我使用线程发送电子邮件的原因是因为 SPUtility.SendEmail 是一个阻塞调用,并且在 SMTP 服务器速度较慢的情况下,用户可能会在长达一分钟的时间内恢复他们的页面。我首先发送电子邮件的原因是因为标准任务电子邮件很浪费时间。

【问题讨论】:

    标签: sharepoint multithreading sharepoint-2007 workflow


    【解决方案1】:

    SPUtility.SendEmail 使用非线程安全的 SPWeb 参数。 SPSite、SPWeb 对象实际上是特定于线程的,因此您不应将它们从一个线程传递到另一个线程。您应该将站点 ID 和 Web URL 传递给新线程并在那里重新创建 SPWeb 对象。

    【讨论】:

    • 你是对的,这就是我的问题所在。在线程中创建一个新的 SPWeb 解决了这个问题。谢谢!
    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 2019-03-03
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 2011-03-25
    相关资源
    最近更新 更多