Я оборачиваю библиотеку для собственного использования. Чтобы получить определенное свойство, мне нужно дождаться события. Я пытаюсь оборачивать это в асинхронный вызов.
По сути, я хочу превратить
void Prepare()
{
foo = new Foo();
foo.Initialized += OnFooInit;
foo.Start();
}
string Bar
{
return foo.Bar; // Only available after OnFooInit has been called.
}
в это
async string GetBarAsync()
{
foo = new Foo();
foo.Initialized += OnFooInit;
foo.Start();
// Wait for OnFooInit to be called and run, but don't know how
return foo.Bar;
}
Как это лучше всего сделать? Я мог бы просто зациклиться и ждать, но я пытаюсь найти лучший способ, такой как использование Monitor.Pulse(), AutoResetEvent или