从Silverlight调用单向WCF服务

时间:2012-03-31 22:00:22

标签: wcf silverlight web-services asynchronous

刚读完这篇文章:http://blogs.msdn.com/b/andypennell/archive/2010/09/20/using-wcf-on-windows-phone-7-walk-through.aspx

文章指出:“Silverlight中的WCF都是异步的”

如何调用具有void返回值的WCF服务?你只是异步调用它,但没有定义回调方法吗?

2 个答案:

答案 0 :(得分:0)

从客户端的角度来看,回调仍然有意义。在这种情况下,没有等待逻辑结果,但您仍然发出异步网络请求,因此仍然存在是否成功的问题。因此,回调基本上是用于通知您消息已成功发送或者是否存在任何类型的通信问题。

答案 1 :(得分:0)

使用void返回类型,WCF不会为该特定服务方法创建事件args子类,并且您不会从该服务获得“结果”。

您可以使用基类AsyncCompletedEventArgs,而不是使用AddCompletedEventArgs,只需确保没有抛出任何异常并将其传递给您的客户端:

client.AddCompleted += new EventHandler<AsyncCompletedEventArgs>(client_AddCompleted);

...

void client_AddCompleted(object sender, AsyncCompletedEventArgs e)
{
    // Notice there is no e.Result

    if (e.Error != null)
    {
        // Do something with the error
    }
}