Estoy envolviendo una biblioteca para mi propio uso. Para obtener cierta propiedad, necesito esperar un evento. Estoy tratando de incluir eso en una llamada asíncrona.Convierta el evento en una llamada asíncrona
Básicamente, quiero convertir
void Prepare()
{
foo = new Foo();
foo.Initialized += OnFooInit;
foo.Start();
}
string Bar
{
return foo.Bar; // Only available after OnFooInit has been called.
}
En este
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;
}
¿Cómo pudo conseguirse mejor? Podría simplemente hacer un bucle y esperar, pero estoy tratando de encontrar una manera mejor, como usar Monitor.Pulse(), AutoResetEvent u otra cosa.
supongo esta función podría ser envuelto en una función asíncrona? O simplemente agregue la función asincrónica a la función y devuelva resultCompletionSource.Task.Result; que lo haría esperar? –
esto se puede envolver en una función asíncrona, actualizando la muestra ahora – Polity
Recién notado, System.Threading.Tasks no está disponible en Windows Phone 7, que es mi plataforma de destino. ¿Hay una alternativa? (he encontrado [esto] (http://www.nuget.org/packages/System.Threading.Tasks) pero me gustaría minimizar las dependencias) –