C++ C++/WinRT:我可以等待来自多个协同路由调用的一个IAsyncation句柄吗?

C++ C++/WinRT:我可以等待来自多个协同路由调用的一个IAsyncation句柄吗?,c++,asynchronous,c++-winrt,C++,Asynchronous,C++ Winrt,我有coroutineiasyncation Foo,它将在我的程序开始时调用一次 我还有一个coroutineiasyncation Bar,它将被任意调用多次,并且在某个时刻必须等待Foo 对Bar的多次调用是否可以像这样等待一次Foo调用? iasyncation m_fooAction=Foo() (稍后,在栏中…) 我尝试了这个,但我一直得到一个错误: 在不允许的情况下分配了代理(请参阅) 请注意: 此开发是针对Windows 8桌面应用程序的,因此不能使用CoreDispatcher

我有coroutine
iasyncation Foo
,它将在我的程序开始时调用一次

我还有一个coroutine
iasyncation Bar
,它将被任意调用多次,并且在某个时刻必须等待
Foo

Bar
的多次调用是否可以像这样等待一次
Foo
调用?

iasyncation m_fooAction=Foo()

(稍后,在
栏中
…)

我尝试了这个,但我一直得到一个错误:
在不允许的情况下分配了代理
(请参阅)

请注意:
此开发是针对Windows 8桌面应用程序的,因此不能使用
CoreDispatcher
DispatcherQueue

根据C++/WinRT作者的说法,
iSyncation
和类似接口只能有一个等待器

作为替代方案,他们建议使用内核句柄。

更新: 来自雷蒙德·陈(MSFT):

选项3适用于我的案例

co_await m_fooAction;
Possible workarounds:

1. Write your own custom object that supports multi-awaiting.
2. Use an existing object that supports multi-awaiting (such as `Concurrency::task`).
3. Use a kernel handle and `resume_on_signal`.

Option 3 is probably simplest.