【发布时间】:2019-08-22 15:23:42
【问题描述】:
我想以某种方式将委托传递给 Task,它必须在请求时在该任务内的变量 (AutoResetEvent) 上执行一些代码。下面是伪代码:
var task = Task.Run(() => DoSth()); + delegate somehow
public async Task DoSth()
{
public static AutoResetEvent waitEvent = new AutoResetEvent(true);
while(true)
{
...
waitEvent.WaitOne(seconds * 1000);
{
}
这个代表要做的是:
waitEvent.Set();
因为我不想等待 60 秒。
并且在某些时候告诉任务运行委托代码。
【问题讨论】:
-
将线程原语(如 AutoResetEvent)与任务编程模型混合不是一个好主意...
-
不清楚您要做什么。您能否更新您的问题以解释您实际尝试解决的问题?很有可能使用比传递委托更好的模式,例如使用 CancellationToken 或传递任务并等待
Task.WhenAny()。
标签: c# multithreading