WCF:简单的异步请求和响应示例

时间:2014-08-17 12:27:19

标签: c# wcf

我一直在尝试学习WCF,我创建了hello world服务来查询值并返回结果。我为服务(Windows phone)创建了一个客户端,以便向服务器发送值并显示结果。虽然我试图在我的网络服务中返回字符串,但是Windows手机应用程序中该方法的返回类型是无效的,而且它也是异步的。

public class Service1 : IService1
{
    public string GetName(String PhoneNumber)
    {
        DBEntities Context = new DBEntities();
        String Name = (from x in Context.Contacts
                       where x.Number.Equals(PhoneNumber)
                       selectx.Name).FirstOrDefault();
        return Name;
    }
 ...
}

在客户端:

private void Submit_Click(object sender, RoutedEventArgs e)
{
    ServiceReference1.Service1Client vv = new ServiceReference1.Service1Client();
    vv.GetNameAsync(TextBox1.Text);
}

我的问题是,如何从异步方法中获得响应?

1 个答案:

答案 0 :(得分:4)

WCF可以使用以下三种方法之一来实现异​​步操作:

  1. 基于任务的异步模式
  2. 基于事件的异步模式
  3. IAsyncResult异步模式
  4. 那么如何编写客户端代码,它取决于你如何实现WCF服务。基于任务的异步模式是实现异步操作的首选方式,因为它是最简单,最直接的。

    如果使用任务,客户端代码可能是这样的:

        Task<T> results = await vv.GetNameAsync(TextBox1.Text);
        T result = results.Result;
        if (result.Success)
        {
           // Do something with result
        }
    

    您还需要使WCF服务异步,这篇MSDN文章How to: Implement an Asynchronous Service Operation就是一个很好的例子。

    请阅读Synchronous and Asynchronous Operations了解详情。