QueueBackgroundWorkItem如何管理线程

时间:2019-11-25 22:37:17

标签: c# asp.net asp.net-web-api

有人知道QueueBackgroundWorkItem如何管理其线程吗?

例如,我的API中有一段代码如下,它遍历电子邮件地址列表并将电子邮件发送到每个地址:

foreach (var address in addresses)
{
    HostingEnvironment.QueueBackgroundWorkItem(async cancellationToken =>
    {
        var emailService = new EmailerService();
        await emailService.SendEmail(cancellationToken, address);
    });
}

更详细地讲,我的问题是... IIS将自行管理QueueBackgroundWorkItem创建的线程,而我不需要执行任何操作,还是说,如果我有5000+个地址,创建5000+个线程,并且杀死我的应用程序?

1 个答案:

答案 0 :(得分:1)

不是IIS管理哪个管理,而是服务执行平台的工作进程或运行时。在这种情况下,ASP.Net run time。 在ASP.NET管理的AppDomain中完成的管理工作项(计划的工作程序)的整个过程。您不需要做任何特定的事情,因为它与上下文无关,因此一旦排队,它最终可能会执行完成。这个词在这里最终意味着很多,因为由于逻辑/取消/应用程序域关闭(自动或显式)中的异常而不能保证执行。

关于this的主题有一个详细的博客,可以帮助您进一步加以阐明。

相关问题