AutoResetEvent的异步(可等待)等效物是什么?
如果在经典线程同步中,我们会使用类似这样的代码:
AutoResetEvent signal = new AutoResetEvent(false);
void Thread1Proc()
{
//do some stuff
//..
//..
signal.WaitOne(); //wait for an outer thread to signal we are good to continue
//do some more stuff
//..
//..
}
void Thread2Proc()
{
//do some stuff
//..
//..
signal.Set(); //signal the other thread it's good to go
//do some more stuff
//..
//..
}
我希望在新的异步处理方式中,能够出现像这样的东西:
SomeAsyncAutoResetEvent asyncSignal = new SomeAsyncAutoResetEvent();
async void Task1Proc()
{
//do some stuff
//..
//..
await asyncSignal.WaitOne(); //wait for an outer thread to signal we are good to continue
//do some more stuff
//..
//..
}
async void Task2Proc()
{
//do some stuff
//..
//..
asyncSignal.Set(); //signal the other thread it's good to go
//do some more stuff
//..
//..
}
我已经看到其他自定义解决方案,但是我所掌握的,在某个时间点仍然需要锁定线程。我不想为了使用新的await语法而这样做。我正在寻找一种真正的可等待信号机制,它不会锁定任何线程。
是否有我在任务并行库中遗漏的东西?
编辑:只是为了明确:SomeAsyncAutoResetEvent是我例子中完全虚构的类名。
TaskCompletionSource
,等待任务忽略其结果。 - Dark Falcon