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

用于异步操作的Silverlight顺序操作,silverlight,asynchronous,Silverlight,Asynchronous,我有3个操作需要按顺序处理,它们是 GetMain信息 获取详细信息1 获取详细信息2 我是这样做的代码如下,但我认为这是不干净的。我想知道另一种按顺序进行异步操作的方法 GetMainInformation.Completed += GetDetails1; GetDetails1.Completed += GetDetails2; 您可以创建一个队列。大概是这样的: GetMainInformation.Completed += GetMainInformationCompleted Ge

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

  • GetMain信息
  • 获取详细信息1
  • 获取详细信息2
  • 我是这样做的代码如下,但我认为这是不干净的。我想知道另一种按顺序进行异步操作的方法

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

    您可以创建一个队列。大概是这样的:

    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();
      }
    }
    

    您可以创建一个队列。大概是这样的:

    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();
      }
    }
    

    如果代码必须以特定的顺序和顺序运行,为什么不在GetDetails1的oncompletion中调用Getdetails2,等等,这样它就可以运行了?或让您的服务有一个调用所有3个的函数,如果数据是相关的,那么在其中包含列表/数组的数据结构可能是可行的,例如

       String CustomerName, 
    String Address, 
    String PhoneNumber, 
    List<orders> Orders, 
    List<itemsMarked> ItemsMarked
    
    字符串客户名称,
    字符串地址,
    字符串电话号码,
    列出订单,
    列出标记的项目
    

    当main信息进入客户部件时,details1进入订单,details2进入标记的项目等。

    如果代码必须按照特定的顺序运行,那么为什么不在GetDetails1的oncompletion中调用Getdetails2,等等,这样它就可以运行了?或让您的服务有一个调用所有3个的函数,如果数据是相关的,那么在其中包含列表/数组的数据结构可能是可行的,例如

       String CustomerName, 
    String Address, 
    String PhoneNumber, 
    List<orders> Orders, 
    List<itemsMarked> ItemsMarked
    
    字符串客户名称,
    字符串地址,
    字符串电话号码,
    列出订单,
    列出标记的项目
    

    当主信息进入客户零件时,详细信息1进入订单,详细信息2进入标记项目等。

    您可以使用Caliburn Micro的IResult和Corroutines

    您可以使用Caliburn Micro的IResult和协同程序