Sto avvolgendo una libreria per mio uso personale. Per ottenere una certa proprietà ho bisogno di aspettare un evento. Sto cercando di avvolgerlo in una chiamata asincrona.Trasforma l'evento in una chiamata asincrona
Fondamentalmente, voglio girare
void Prepare()
{
foo = new Foo();
foo.Initialized += OnFooInit;
foo.Start();
}
string Bar
{
return foo.Bar; // Only available after OnFooInit has been called.
}
In questa
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;
}
Come può essere meglio realizzato? Potrei semplicemente fare un ciclo e aspettare, ma sto cercando di trovare un modo migliore come usare Monitor.Pulse(), AutoResetEvent o qualcos'altro.
Credo che questa funzione potrebbe essere avvolto in una funzione asincrona? Oppure aggiungi semplicemente async alla funzione e restituisci resultCompletionSource.Task.Result; quale farebbe aspettare? –
questo può essere avvolto in una funzione asincrona, aggiornando l'esempio ora – Polity
Appena notato, System.Threading.Tasks non è disponibile su Windows Phone 7, che è la mia piattaforma di destinazione. C'è un'alternativa? (ho trovato [questo] (http://www.nuget.org/packages/System.Threading.Tasks) ma vorrei ridurre al minimo le dipendenze) –