现在我正在使用类似于这种结构的东西
A.Completed += () =>
{ B.Completed += () =>
{ C.Completed += () =>
{
//
}
C();
}
B();
}
A();
并不是很满意。是否有更好,更清洁的方式来执行此类后续/并发操作执行?
我看一下Rx框架,但是它专为其他任务而设计,对我的问题来说看起来有点过分。
答案 0 :(得分:8)
除非有人在A完成之前实际调用B或C,否则无需嵌套设置已完成事件。如果你把它分开,这就是它的样子:
A.Completed += () => { B(); };
B.Completed += () => { C(); };
C.Completed += () => { // };
A();
我认为删除嵌套实际上会使它更清洁。
答案 1 :(得分:4)
看看ReactiveUI。它基于Rx,将大大简化您的代码。以下是一个示例:Calling Web Services in Silverlight using ReactiveXaml
答案 2 :(得分:2)
你可以看看TPL。你可以像这个帖子一样编写代码:link
答案 3 :(得分:1)
它不是很多更干净,但您可能会看一下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
你并没有真正减少代码,但我会说它更清洁了。
答案 4 :(得分:1)
等待C#5.0并使用新的async
和await
关键字。
以下是一些关于此的初步链接: