2011-08-08 286 views
3

我有一个工作正常的WCF服务,但现在我想调用其方法异步。在VS2010中,我在客户端重新添加了服务引用,并选中了异步方法的复选框。但是,现在当我调用MyMethodAsync()而不是MyMethod()时,没有任何反应。WCF调用异步方法

我在做什么错?

回答

3

您需要订阅成功回调。这里有一个article on MSDN,显示一个例子:立即

client.MyMethodCompleted += new EventHandler<MyMethodCompletedEventArgs>(MyMethodCallback); 
client.MyMethodAsync(parameters); 

MyMethodAsync回报,一旦操作完成,它将作为参数传递的异步操作的结果MyMethodCallback功能将被调用。

+0

MyMethodCompletedEventArgs从哪里来? MyMethodCallback使用哪些参数类型?只是IAsyncResult? – Jonnster

+0

@Jonnster,应该在生成的代理中定义'MyMethodCompletedEventArgs'。实际的类可能会根据您尝试调用的方法名称而被调用。就“MyMethodCallback”而言,它涉及两个参数:sender(类型为“object”)和event类型为MyMethodCompletedEventArgs的参数。 –

+0

否... CompletedEventArgs未创建。这就是我问的原因。我认为他们会。它创建了所有其他的位,但不是EventArgs的一个。我尝试删除并重新开始,但仍然没有。 – Jonnster