[英]How to execute async operations sequentially?
現在我正在使用類似於這種結構的東西
A.Completed += () =>
{ B.Completed += () =>
{ C.Completed += () =>
{
//
}
C();
}
B();
}
A();
並不是很滿意。 是否有更好,更清潔的方式來執行此類后續/並發操作執行?
我看看Rx框架,但它是為其他任務設計的,看起來像我的問題有點過分。
除非有人在A完成之前實際調用B或C,否則無需嵌套設置已完成事件。 如果你把它分開,這就是它的樣子:
A.Completed += () => { B(); };
B.Completed += () => { C(); };
C.Completed += () => { // };
A();
我認為刪除嵌套實際上使它更清潔。
看看ReactiveUI 。 它基於Rx,將大大簡化您的代碼。 下面是一個示例: 使用ReactiveXaml在Silverlight中調用Web服務
你可以看看TPL。 你可以在這個線程中編寫代碼: link
它不是更清潔,但你可能會看看BackgroundWorker
。
BackgroundWorker A = new BackgroundWorker();
A.DoWork += (s, e) => AMethod();
A.RunWorkerCompleted += (s, e) => BMethod();
BackgroundWorker B = new BackgroundWorker();
B.RunWorkerCompleted += (s, e) => CMethod();
//etc
你並沒有真正減少代碼,但我會說它更清潔。
等待C#5.0並使用新的async
和await
關鍵字。
以下是一些關於此的初步鏈接:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.