gpt4 book ai didi

asp.net - 如何取消 HostingEnvironment.QueueBackgroundWorkItem

转载 作者:行者123 更新时间:2023-12-01 12:28:21 37 4
gpt4 key购买 nike

有没有办法取消使用 HostingEnvironment.QueueBackgroundWorkItem 制作的后台任务? ?

CancellationToken它会通知任务是否被取消,但我该怎么做?
引用https://msdn.microsoft.com/en-us/library/dd997396(v=vs.110).aspx

A successful cancellation involves the requesting code calling the CancellationTokenSource.Cancel method



好的。我在哪里可以访问 CancellationTokenSource ?

最佳答案

经过几次试验,我想出了解决方案:

HostingEnvironment.QueueBackgroundWorkItem(ct =>
{
var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(ct);
var cancellationToken = linkedTokenSource.Token;
return Task.Factory.StartNew(() =>
{
// do stuff on background
}, cancellationToken);
});

更新:

确实,不需要任务。感谢 svick 提出这个问题。
这是一个没有任务的更详细的代码示例。
HostingEnvironment.QueueBackgroundWorkItem(ct =>
{
var linkedTokenSource = CancellationTokenSource.CreateLinkedTokenSource(ct);
// following is a dummy method, but you get the idea.
// StoreCancellationTokenSourceSoItCanBeUsedSomewhereElse(linkedTokenSource);

var cancellationToken = linkedTokenSource.Token;

try
{
while(true)
{
cancellationToken.ThrowIfCancellationRequested();
// do bg stuff
}
}
catch (OperationCanceledException ex)
{
// either token is in cancelled state
}
});

关于asp.net - 如何取消 HostingEnvironment.QueueBackgroundWorkItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37225472/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com