// начало
// инициировать действие
// дождаться event'а
// конец
你需要像这样重写代码:
Listener.MessageHandler h = null;
h = (args) =>
{
listenerPrice.Handler -= h;
// конец
};
// начало
listenerPrice.Handler += h;
// инициировать действие
一个更好的选择是切换到 async/await。这样,您的代码将如下所示:
// начало
// инициировать действие
await CallbackReceived();
// конец
处理程序将在事件发送者调用它的线程上调用 - 在您的情况下,主线程。绕过它是不可能的。
但是,您可以接收事件并将处理转移到另一个线程。例如,通过
Task.Run.对于您的情况:
你需要像这样重写代码:
一个更好的选择是切换到 async/await。这样,您的代码将如下所示:
该方法
CallbackReceived可以实现,例如,如下所述:TaskCompletionSource<T> 的含义是什么,什么时候使用它更好?