3

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

4

1 回答 1

0

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

于 2012-04-30T15:16:59.257 回答