用于异步操作的Silverlight顺序操作

时间:2011-06-09 05:17:03

标签: silverlight asynchronous

我有3个需要按顺序处理的操作,它们是

  1. GetMainInformation
  2. GetDetails1
  3. GetDetails2
  4. 我通过下面的代码执行此操作,但我认为它不干净。我想知道按顺序执行异步操作的另一种方法。

    GetMainInformation.Completed += GetDetails1;
    GetDetails1.Completed += GetDetails2;
    

3 个答案:

答案 0 :(得分:1)

您可以创建一个队列。像这样:

GetMainInformation.Completed += GetMainInformationCompleted
GetDetails1.Completed += GetDetails1Completed
GetDetails2.Completed += GetDetails2Completed

发起请求:

requestCounter = 3;
GetMainInformationAsync();
GetDetails1();
GetDetails2();

在每个已完成的功能中:

void GetMainInformationCompleted()
{
  // Store result in member variable
  requestCounter--;
  if (requestCounter == 0)
  {
    ProcessRequest();
  }
}

答案 1 :(得分:0)

如果代码必须以特定的顺序运行,并且顺序运行,为什么不在GetDetails1的oncompletion中调用Getdetails2,以便它可以通过?要么。让你的服务具有调用所有3的功能,如果数据是相关的,那么在其中包含列表/数组的数据结构可能是可行的,例如。

   String CustomerName, 
String Address, 
String PhoneNumber, 
List<orders> Orders, 
List<itemsMarked> ItemsMarked

当MainInfo转到客户部分时,details1会将订单和详细信息2转换为标记项目等。

答案 2 :(得分:0)