我熟悉创建WCF客户端,调用标准方法,然后在完成时关闭或中止客户端的最佳实践,但我想知道客户端的异步方法。
我有一个管理器类,它有一些传递事件供消费类附加,以便检索异步调用的结果。例如:
internal sealed class CommController
{
public event GetClientIdEventHandler ClientIdReceived;
private readonly LocalCommSvcClient _localCommSvcClient = new LocalCommSvcClient();
public CommController()
{
_localCommSvcClient.GetClientIdCompleted += (o, e) => ClientIdReceived(o, e);
}
public void GetClientIdAsync()
{
_localCommSvcClient.GetClientIdAsync();
}
}
但我不知道客户关闭和/或处置的位置。我无法找到关闭WCF客户端的最佳实践,因为它与异步使用有关。我应该把我的.Close()和/或.Abort()调用放在哪里?
答案 0 :(得分:0)
您需要先打开()客户端,然后才能像发送同步客户端一样发送消息。 在不再需要通信之后(至少在您收到响应时),您应该关闭它()以释放资源。 详细信息取决于服务的绑定和行为配置。 参见例如http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.instancecontextmode.aspx