【发布时间】:2009-04-23 14:13:18
【问题描述】:
在 C# 中,如何对 WCF Web 服务进行异步调用?我设置了一个服务参考来生成异步。我还修改了调用以使用 { WebServiceObject.Begin* () } 但最后有两个参数,“AsyncCallback”和“object asyncState”。这些是什么以及如何使用它们?
谢谢,
【问题讨论】:
标签: c# wcf asynchronous
在 C# 中,如何对 WCF Web 服务进行异步调用?我设置了一个服务参考来生成异步。我还修改了调用以使用 { WebServiceObject.Begin* () } 但最后有两个参数,“AsyncCallback”和“object asyncState”。这些是什么以及如何使用它们?
谢谢,
【问题讨论】:
标签: c# wcf asynchronous
您可能还想查看Async without the Pain
【讨论】:
参见 MSDN 这里; http://msdn.microsoft.com/en-us/library/system.asynccallback.aspx
这里; http://msdn.microsoft.com/en-us/library/ms228969.aspx
这里; http://msdn.microsoft.com/en-us/library/ms228975.aspx
这里; http://msdn.microsoft.com/en-us/library/86wf6409.aspx
基本上在 Begin* 中设置一个回调,当操作完成时调用该回调。在那里你调用 End* 来检索适当的数据。
【讨论】:
操作完成时会调用回调,因此您可以调用 End* 并获取返回值或异常(如果有)。如果您在多个地方使用相同的回调方法,asyncState 只是回调中匹配的值。这是异步设计模式的描述 - http://msdn.microsoft.com/en-us/library/aa719595(VS.71).aspx
如果您正在创建 GUI 应用程序,请考虑使用另一个版本 - *Async 方法,该方法也会为每个操作生成。它提供线程同步。
【讨论】: