我一直在尝试学习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);
}
我的问题是,如何从异步方法中获得响应?
答案 0 :(得分:4)
WCF可以使用以下三种方法之一来实现异步操作:
那么如何编写客户端代码,它取决于你如何实现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就是一个很好的例子。