【问题标题】:Prevent Background Thread "Timeout expired." error防止后台线程“超时已过期”。错误
【发布时间】:2011-05-31 16:29:45
【问题描述】:

我的页面上的点击事件中有以下代码部分:

Dim ts As New ThreadStart(AddressOf SendEmails)
Dim t As New Thread(ts)
t.IsBackground = True
t.Start()

这会操作SendEmails 方法,该方法会发送 1000 封简报电子邮件。

但是,这似乎超时了,因为我已经能够记录以下错误:

超时。在操作完成之前超时时间已过或服务器没有响应。

如何增加超时量以留出时间发送 1000 封电子邮件?

【问题讨论】:

    标签: vb.net timeout asp.net-3.5 background-thread


    【解决方案1】:

    在“SendEmails”功能中显示一些代码会很有帮助。超时可能发生在 SMTP 级别...查看错误消息,也可能是服务器已关闭 SMTP 连接。了解您要连接的电子邮件服务器也很有帮助。如果它是 Exchange 服务器,管理员可能对 SMTP 连接器有一些限制,即如何通过一个连接发送 musch 电子邮件,这可能是问题所在。您可以发送大约 10 或 50 封电子邮件...或任何电子邮件吗?

    另一方面,请尝试使用BackgroundWorker

    【讨论】:

    • 发送了大约 700 封电子邮件。如果错误与 SMTP 限制有关,那么该错误肯定与超时过期错误不同吗?
    • 我认为您的线程不会像那样超时。您在 SendMails() 函数中发生了一些事情,或者您的 SMTP 被限制了。
    • 如果后台线程已经运行了 6 个小时呢?后台线程不会像常规进程那样超时吗?抱歉,我不太了解服务器如何处理后台线程
    猜你喜欢
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 2020-04-28
    • 2017-07-07
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多