链式异步/事件调用是否有一个有用的设计模式?
我目前不得不在Silverlight中集成大量的Web服务调用,这些调用类似于下面的代码。在完成所有3的加载之前,不可能进行任何用户交互。
// In my view, having standard delegate methods (non-anonymous) makes the
// code below even messier.
// I've left out the EventArgs to shorten the example however
// I usually use these objects in the delegate method.
MyService1 service1 = new MyService1();
service1.GetAllUsersCompleted += delegate
{
MyService2 service2 = new MyService2();
service2.AnotherTaskCompleted += delegate
{
MyService3 service3 = new MyService3();
service3.YetAnotherTaskCompleted += delegate
{
// etc.
};
service3.YetAnotherTask();
};
service2.AnotherTask();
};
service1.GetAllUsers();
本质上我希望调用是同步的,但是由于Silverlight中的Web服务代理类的体系结构(一切都是事件驱动的)我不能这样做。
我的问题是,是否有一个更优雅的解决方案或者可能是一个以.NET为中心的设计模式,用于重构我从一个委托方法调用另一个方法,调用另一个方法,变成更容易管理的东西?
我对代码的一个最大问题是在委托中的大部分工作之后实际的方法调用。
没有找到相关结果
已邀请:
3 个回复
豆兢
臀博
嘘伪