0

WCF サービスを非同期的に呼び出す次のコードがあります。

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

この場合、サービス クライアント インスタンスを破棄する最善の方法は何ですか?

4

1 に答える 1

1

考慮すべき2つのバリエーション。どちらも継続ブロックの先頭に配置する必要があります。

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();
于 2013-03-26T12:09:35.977 に答える