Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何逐个调用多个调用操作?_C#_Silverlight_Silverlight 5.0 - Fatal编程技术网

C# 如何逐个调用多个调用操作?

C# 如何逐个调用多个调用操作?,c#,silverlight,silverlight-5.0,C#,Silverlight,Silverlight 5.0,我需要根据存储在observateCollection中的用户选择的项调用一些调用操作(所有不同),并返回字符串/int值 现在,当选择仅为一项时,它是直接进行的,我可以调用并使用Completed事件并获取我的返回值 我有大约{ //获取将其分配给Textblock的值。 }; 打破 案例:2 InvokeOperation inv=上下文。为_2(项目)执行更新; 库存已完成+=(s,a)=>{ //获取将其分配给Textblock的值。 }; 打破 //其他类似情况 } } 看看Silve

我需要根据存储在
observateCollection
中的用户选择的项调用一些调用操作(所有不同),并返回字符串/int值

现在,当选择仅为一项时,它是直接进行的,我可以调用并使用
Completed
事件并获取我的返回值

我有大约{ //获取将其分配给Textblock的值。 }; 打破 案例:2 InvokeOperation inv=上下文。为_2(项目)执行更新; 库存已完成+=(s,a)=>{ //获取将其分配给Textblock的值。 }; 打破 //其他类似情况 } }
看看Silverlight的反应式扩展。您将能够轻松地将RIA服务
InvokeOperation
包装在一个
IObservable
中,它表示其异步完成。一种方法是使用
Observable.Create
方法

之后,您将能够以多种方式组合
iobservable
集合:使用
Observable.Concat
按顺序执行它们,使用
Observable.ForkJoin
并行执行它们,过滤它们,加入它们等等

我已经成功地将其用于RIA服务的加载操作,并在较小程度上调用操作。在我看来,与显式编写回调方法相比,使用可观察对象的可组合性要好得多


下面是一篇博客文章,概述了加载操作的方法,但方法非常相似:

您所说的“调用操作”到底是什么意思?请给我们一些代码。我猜他想为每个选定的项调用一个(异步)方法,他有一个方法签名,一次只接受一个项,并且不知道如何链接调用。我的第一个建议是编写一个方法,该方法接受一组项,异步调用它,并在该方法中执行foreach。
//Pseudo-code
foreach (var item in SelectedItems) 
{

    var id = item.ID;

    switch(id) 
    {    
      case: 1
         InvokeOperataion<int> inv = context.PerformUpdateFor_1(item);
         inv.Completed += (s,a) => { 
         //get the value assign it to Textblock.
         };
         break;
      case: 2
         InvokeOperataion<int> inv = context.PerformUpdateFor_2(item);
         inv.Completed += (s,a) => { 
         //get the value assign it to Textblock.
         };
         break;
//Other cases similar to this    
   }

}