我试图弄清楚在 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/