c# - 用于加速站点的线程池

标签 c# asp.net multithreading

我试图弄清楚在 ASP.NET 站点中使用 ThreadPools 是否好。对此有很多讨论,但很难找到权威来源。

我正在构建一个网站,用户可以在其中填写表单并按下发送按钮,这会触发发送邮件。我的问题是我的邮件供应商的 API 非常慢(100 毫秒到 12 秒),这不利于应用程序的响应能力。

这是个好主意吗?:

ThreadPool.QueueUserWorkItem(e =>
    EmailFactory.BuildBuyerEmailValidationEmail(client).Send()
);

该表格每天大约使用 100-200 次。

我想避免创建队列,因为这会增加应用程序的复杂性。

最佳答案

另一种选择是设置一个 Web 服务(例如 WCF)来处理您的所有电子邮件路由。然后,您可以将服务方法配置为单向调用,这样当用户单击按钮时,它会触发对 web 服务的请求并立即返回页面,因为它不会等待 web 服务处理。 IMO 我会避免尝试直接使用 IIS 中的线程并让它以它想要的方式管理线程。

关于c# - 用于加速站点的线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637150/

相关文章:

c# - WebClient UseDefaultCredentials 不适用于 ldap 身份验证

框架 4.5 中的 c# ReadAsJsonAsync

mysql - 如果另一个表具有空值(序列不包含元素),则查询不显示

java - Box.add() 线程安全吗?

c# - 从脚本创建数据库时关键字 'USE' 错误附近的语法不正确

c# - 防止 Entity Framework 强制转换

c# - Server.MapPath 问题?

asp.net - html 页面的 ASP 服务器统计信息

Consumer/Producer多线程同步错误

java - 在并发 HashMap 中重新散列期间检索