我有一个后台任务需要完成;但是,我无法向通道写入参数。原因是作者只接受了 1 个论点。如何将函数排队以使用参数完成。
private readonly Channel<Func<double, double, string, CancellationToken, ValueTask>> _queue;
...
public async ValueTask QueueWorkItemAsync(
Func<double, double, string, CancellationToken, ValueTask> workItem, string args)
{
if (workItem is null)
{
throw new ArgumentNullException(nameof(workItem));
}
// Can't pass args into WriteAsync
await _queue.Writer.WriteAsync(workItem);
}
我最终将
Channel
换成了 ConcurrentQueue
。这让我可以更加灵活地添加内容。