簡體   English   中英

如何順序執行異步操作?

[英]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

你並沒有真正減少代碼,但我會說它更清潔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM