我试图在Xamarin Forms的WCF服务中调用一个简单的Login函数。
我已经毫无问题地引用了该服务。
我已经定义了这样的客户端对象:
Service1Client client = new Service1Client();
我的服务功能名称是Login并返回一个String。这是定义:
Public Function Login(ByVal wUser As String, ByVal wPassword As String) As String Implements IService1.Login
Return String.Format("Test")
End Function
当我尝试从Xamarin Forms ServiceClient对象调用该函数时,我只能访问LoginAsync函数而不是Login。研究了一下,我发现我必须使用等待异步函数。
我尝试了但是然后该行显示错误"无法使用await with void":
await client.LoginAsync("user", "password");
我做错了什么?
如果我删除了await语句,WCF函数会正确执行并返回"测试"字符串,但我不知道如何在Xamarin Forms上检索它。
如何检索函数尝试返回的字符串?
谢谢。
答案 0 :(得分:2)
我终于找到了解决方案。
我需要将一个侦听器函数设置为LoginCompleted事件。
client.LoginCompleted += client_LoginCompleted;
client.LoginAsync("user", "password");
然后我可以在该函数的EventArgs中得到结果
static void client_LoginCompleted(object sender, LoginCompletedEventArgs e)
{
var result = e.Result;
}
以下是帮助我了解异步调用在WCF中如何工作的链接以及获得结果的三种可行方法。
http://jaliyaudagedara.blogspot.com.es/2013/03/asynchronous-operations-in-wcf.html
希望这有助于某人。