在异步操作中关闭WCF客户端

时间:2013-03-26 12:09:36

标签: wcf asynchronous

我有以下代码,它以异步方式调用WCF服务:

var client = new MyServiceClient();
Task.Factory.FromAsync(client.BeginDo, client.EndDo, request, null).ContinueWith(t => {
    //process t.Result
});

在这种情况下,处理服务客户端实例的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

需要考虑两种变体。两者都应该放在继续块的开头。

1

try
{
    client.Close();
}
catch (CommunicationException e)
{
    client.Abort();
}
catch (TimeoutException e)
{
    client.Abort();
}
catch (Exception e)
{
    client.Abort();
    throw;
}

2

if (client.State == CommunicationState.Faulted)
    client.Abort();
else
    client.Close();