c# - QueueBackgroundWorkItem 如何管理线程
问题描述
有谁知道 QueueBackgroundWorkItem 如何管理它的线程?
比如说,我的 API 中有如下代码块,它遍历电子邮件地址列表并向每个地址发送一封电子邮件:
foreach (var address in addresses)
{
HostingEnvironment.QueueBackgroundWorkItem(async cancellationToken =>
{
var emailService = new EmailerService();
await emailService.SendEmail(cancellationToken, address);
});
}
更详细地说,我的问题是...... IIS 是否会自行管理由 QueueBackgroundWorkItem 创建的线程,我不需要做任何事情,或者说如果我有 5000 多个地址,创建 5000 多个线程并杀死我的应用程序?
解决方案
管理这个的不是IIS
管理器,而是服务于执行平台的工作进程或运行时。在这种情况下,ASP.Net run time
。在 ASP.NET 管理的AppDomain
. 您不需要做任何具体的事情,因为它与上下文无关,因此一旦排队,它最终可能会执行完成。这个词最终在这里意味着很多,因为由于逻辑/取消/应用程序域自动或显式关闭中的异常,无法保证执行。
有一个关于这个主题的详细博客,它将帮助您进一步澄清它。
推荐阅读
- mysql - MySQL 服务器已消失错误。--max_allowed_packet=2G 也不起作用
- python - 用 pyplot 绘制二维数组
- mysql - 从 csv 文件导入数据库,utf8 问题
- php - jquery-uniform 单选按钮不起作用 yajra-laravel-datatable 包(laravel 5.6)
- jquery - Dropzone jquery - 始终使用 GET 请求,事件设置为 POST
- angular - 使用 angular5 在验证中未收到错误消息
- assembly - IAR 汇编器指令 IF
- python - 在 Python 2.7.1 中创建 unicode XML 文件
- javascript - 当用户完成输入时运行 JS 代码
- asp.net-mvc - ASP.NET MVC 5,在 Session 中存储列表值