【发布时间】:2014-03-02 13:13:28
【问题描述】:
我有一个 WCF 客户端代理,用于调用异步方法,如下所示:
var prox = new DoSomethingServiceClient("BasicHttpBinding_IDoSomethingService");
prox.DoSomethingCompleted += new EventHandler<AsyncCompletedEventArgs>(svcref_DoSomethingCompleted);
prox.DoSomethingAsync(0, Guid.NewGuid());
何时关闭/中止代理?
我是否在 svcref_DoSomethingCompleted 的第一行中使用 sender 对象?
我在 MS 文档中看到他们在主线程中关闭代理,而不是在回调中。这是好习惯吗?对我来说似乎是错误的:
http://msdn.microsoft.com/en-us/library/ms730059(v=vs.110).aspx
我也发现了这一点,使用基于任务的异步,它建议您在委托回调中关闭代理,这是我所期望的:
http://fun-with-blackhawk.blogspot.com/2010/03/wcf-exception-handling-in-asynchronous.html
【问题讨论】:
-
我猜该示例有效,因为在
client.Close()之前有一个阻塞Console.ReadLine()。如果它不存在,它可能会在调用完成之前关闭客户端。