現在、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 サービス プロキシ クラスのアーキテクチャ (すべてがイベント ドリブン) のため、これを行うことはできません。
私の質問は、1 つのデリゲート メソッドから別のメソッドを呼び出して別のメソッドを呼び出し、管理しやすいものにリファクタリングするための、より洗練されたソリューション、または .NET 中心のデザイン パターンがあるのでしょうか?
コードに関する私の最大の問題の 1 つは、実際のメソッド呼び出しがデリゲートでの大部分の作業の後に来ることです。