C# 如何按顺序执行异步操作?
现在我正在使用类似于这个结构的东西C# 如何按顺序执行异步操作?,c#,silverlight,C#,Silverlight,现在我正在使用类似于这个结构的东西 A.Completed += () => { B.Completed += () => { C.Completed += () => { // } C(); } B(); } A(); 而且对它不太满意。有没有更好、更干净的方法来执行此类连续/并发操作 我看了一下Rx框架,但它是为其他任务设计的,对于我的问题来说,它看起来太过分了。它不太干净,但您可以看看Backgrou
A.Completed += () =>
{ B.Completed += () =>
{ C.Completed += () =>
{
//
}
C();
}
B();
}
A();
而且对它不太满意。有没有更好、更干净的方法来执行此类连续/并发操作
我看了一下Rx框架,但它是为其他任务设计的,对于我的问题来说,它看起来太过分了。它不太干净,但您可以看看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
您并没有真的在代码上削减太多,但我想说它更干净了。看一看。它基于Rx,将大大简化您的代码。下面是一个示例:不需要嵌套设置已完成的事件,除非有人可能在A完成之前实际调用B或C。如果你把它分开,下面是它的样子:
A.Completed += () => { B(); };
B.Completed += () => { C(); };
C.Completed += () => { // };
A();
我认为去掉嵌套实际上使它更干净。你可以看看TPL。您可以这样编写代码:等待C#5.0并使用新的
async
和Wait
关键字
以下是一些关于此的初步链接: