【问题标题】:Xamarin.ios run a WCF Service function using awaitXamarin.ios 使用 await 运行 WCF 服务函数
【发布时间】:2017-03-29 16:31:49
【问题描述】:

我遵循了以下示例,效果很好。

https://developer.xamarin.com/guides/cross-platform/application_fundamentals/web_services/walkthrough_working_with_WCF/

唯一的问题是,该示例使用按钮单击来加载数据。现在我有两个单独的调用不同的函数,我需要一个等待另一个,例如:

因此,例如,当我调用 function2 时,我想先等待 function1。

_client.function1Async();
_client.function2Async();

我可以将 function2 调用放在 function1Completed 处理程序中,但我希望对它使用异步等待。当我使用异步任务时,我收到一条错误消息,说不能等待 void。但是示例中的 Web 服务异步功能是无效的

如果我有 6 个要运行的调用,它会变得非常混乱。

void _client_function1Completed(object sender,UpdateOrdersByWardCompletedEventArgs e
{
}

void _client_function2Completed(object sender,UpdateOrdersByWardCompletedEventArgs e
{
}

希望这是有道理的。

【问题讨论】:

    标签: c# wcf xamarin.ios


    【解决方案1】:

    你可以 Task.ContinueWith ContinueWith 创建一个在任务 1 完成时异步执行的延续。

    var task1 = Task.Factory.StartNew( () => { func1(); } );

    任务 task2 = task1 .ContinueWith( (i) => { func2(); } );

    【讨论】:

      【解决方案2】:

      不确定我是否理解你想要达到的目标,但我想你可以尝试这样的事情:

      鉴于一些冗长(和阻塞)的方法:

      public void func1()
      {
          Console.WriteLine("func1");
          System.Threading.Thread.Sleep(5000);
      }
      
      public void func2()
      {
          Console.WriteLine("func2");
          System.Threading.Thread.Sleep(5000);
      }
      

      您可以通过这样做来添加异步运行冗长内容的能力:

      public async Task function1Async()
      {
         await Task.Run(() => {
            func1();
         });
      }
      
      public async Task function1Async()
      {
         await Task.Run(() => {
            func2();
         });
      }
      

      现在您可以选择异步或同步运行“func1”和“func2”,例如:

      function1Async().Wait();    // will block
      function2Async();           // will run asynchronously
      

      因此,对于您的特定情况,鉴于您已经拥有两个异步方法,我想您需要做的就是如上所示调用它们。

      【讨论】:

      • 这正是我所需要的!再次感谢:-)
      猜你喜欢
      • 2012-06-19
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多