以下のような感じでハンドリングしてくださいね。
{
//空Clientを作る
Client facade = null;
try
{
//実体を作る
facade = new Client("EndPoint");
//オープンする
facade.Open();
//利用する実際の処理
Internal(facade);
}
//Openに失敗したりするとEndpoint例外が出る。なにか捕まえて、別のエンドポイントにする場合はここでハンドリング
catch (EndpointNotFoundException epnfe)
{
throw;
}
//通信エラー系はこっち
catch (CommunicationException ce)
{
//必ずAbortを呼ぶ
if (facade != null) facade.Abort();
throw;
}
finally
{
//最後にはClose
if (facade != null) facade.Close();
}
}
http://blogs.wankuma.com/naka/archive/2007/06/06/79737.aspx
ポイントは1年半前に書いたエントリのママです。