Kendi kullanımım için bir kitaplık kuruyorum. Belli bir özelliği elde etmek için bir etkinlik beklemek zorundayım. Bunu bir async çağrısı haline getirmeye çalışıyorum.Etkinliği bir uyumsuz çağrıya dönüştürün
Temelde, bu en iyi başarılı olabilir Bu nasıl
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;
}
içine
void Prepare()
{
foo = new Foo();
foo.Initialized += OnFooInit;
foo.Start();
}
string Bar
{
return foo.Bar; // Only available after OnFooInit has been called.
}
açmak istiyor? Sadece dönüp bekleyebilirim, ancak Monitor.Pulse(), AutoResetEvent veya başka bir şey kullanmak gibi daha iyi bir yol bulmaya çalışıyorum.
(fantezi zaman uyumsuz olan)
Numune kullanımı bu işlevi zaman uyumsuz işlevinde sarılmış olabilir sanırım? Ya da sadece işleve async ekleyin ve resultCompletionSource.Task.Result döndürün; hangi beklemesine sebep olur? –
bu bir async fonksiyonu içinde sarılmış, şimdi örnek güncelleme – Polity
Sadece fark ettim, System.Threading.Tasks hedef platform olan Windows Phone 7'de mevcut değil. Alternatif var mı? (bu [http://www.nuget.org/packages/System.Threading.Tasks] 'i bulduk ancak bağımlılıkları en aza indirmek istiyorum) –