Я упаковываю библиотеку для собственного использования.Чтобы получить определенную недвижимость, мне нужно дождаться события.Я пытаюсь обернуть это в асинхронный вызов.
По сути, я хочу превратить
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 или чего-то еще.