Tôi đang gói thư viện để sử dụng riêng. Để có được một tài sản nhất định, tôi cần phải đợi một sự kiện. Tôi đang cố gắng bọc nó vào một cuộc gọi không đồng bộ.Biến sự kiện thành cuộc gọi không đồng bộ
Về cơ bản, tôi muốn chuyển
void Prepare()
{
foo = new Foo();
foo.Initialized += OnFooInit;
foo.Start();
}
string Bar
{
return foo.Bar; // Only available after OnFooInit has been called.
}
Into này
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;
}
Làm sao này tốt nhất được thực hiện? Tôi chỉ có thể lặp lại và chờ đợi, nhưng tôi đang cố gắng tìm một cách tốt hơn như sử dụng Monitor.Pulse(), AutoResetEvent hoặc cái gì khác.
Tôi đoán chức năng này có thể được bọc trong một hàm async? Hoặc chỉ cần thêm async vào hàm và trả về resultCompletionSource.Task.Result; điều gì sẽ khiến nó phải đợi? –
điều này có thể được gói trong một chức năng async, cập nhật các mẫu bây giờ – Polity
Chỉ cần nhận thấy, System.Threading.Tasks không có sẵn trên Windows Phone 7 đó là nền tảng mục tiêu của tôi. Có cách nào khác không? (đã tìm thấy [this] (http://www.nuget.org/packages/System.Threading.Tasks) nhưng tôi muốn giảm thiểu phụ thuộc) –