来自此示例:here 使用以下队列。
public class BackgroundTaskQueue : IBackgroundTaskQueue
{
public ConcurrentQueue<Func<CancellationToken, Task>> _workItems =
new ConcurrentQueue<Func<CancellationToken, Task>>();
private SemaphoreSlim _signal = new SemaphoreSlim(0);
public void QueueBackgroundWorkItem(
Func<CancellationToken, Task> workItem)
{
if (workItem == null)
{
throw new ArgumentNullException(nameof(workItem));
}
_workItems.Enqueue(workItem);
_signal.Release();
}
public async Task<Func<CancellationToken, Task>> DequeueAsync(
CancellationToken cancellationToken)
{
await _signal.WaitAsync(cancellationToken);
_workItems.TryDequeue(out var workItem);
return workItem;
}
}
从api控制器中调用它,但需要能够检查其状态。
控制器:
var guid = Guid.NewGuid().ToString();
queue.QueueBackgroundWorkItem(async token=>{
await Task.Delay(TimeSpan.FromSeconds(60), token);
});
我如何将Guid与任务相关联并在以后进行检查?