为异步方法创建和关闭WCF客户端的最佳实践

时间:2012-04-17 15:56:28

标签: c# .net wcf asynchronous

我熟悉创建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()调用放在哪里?

1 个答案:

答案 0 :(得分:0)

您需要先打开()客户端,然后才能像发送同步客户端一样发送消息。 在不再需要通信之后(至少在您收到响应时),您应该关闭它()以释放资源。 详细信息取决于服务的绑定和行为配置。 参见例如http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.instancecontextmode.aspx