実践:WCFクローズ最高の私は、WCFプロキシを使用するためのベストプラクティスがあろうと読ん
YourClientProxy clientProxy = new YourClientProxy();
try
{
.. use your service
clientProxy.Close();
}
catch(FaultException)
{
clientProxy.Abort();
}
catch(CommunicationException)
{
clientProxy.Abort();
}
catch (TimeoutException)
{
clientProxy.Abort();
}
私の問題は、私は私のプロキシを割り当てた後、私はそれにイベントハンドラを割り当て、また、使用して他の方法を初期化し、ありますプロキシ:
public void InitProxy()
{
sdksvc = new SdkServiceClient();
sdksvc.InitClusteringObjectCompleted += new EventHandler<InitClusteringObjectCompletedEventArgs>(sdksvc_InitClusteringObjectCompleted);
sdksvc.InitClusteringObjectAsync(Utils.DSN, Utils.USER,Utils.PASSWORD);
sdksvc.DoClusteringCompleted += new EventHandler<DoClusteringCompletedEventArgs>(sdksvc_DoClusteringCompleted);
sdksvc.CreateTablesCompleted += new EventHandler<CreateTablesCompletedEventArgs>(sdksvc_CreateTablesCompleted);
}
私は今InitProxy()メソッドに私はベストプラクティスが示唆するように、それを使用したい場合、私はプロキシを使用するたびに呼び出す必要があります。
これを回避する方法についてのご意見はありますか?
WCFサービスを呼び出すたびに '.Close()'を呼び出す必要はありません。エラーがなければ、別の呼び出しのために再びそのプロキシを使用することは間違いありません。このベストプラクティスについてのポイントは、あなたのWCFプロキシ呼び出しを 'using(....){....}'ブロックに入れてはいけないということです。なぜならそのブロックはプロキシを終了 '}' WCFプロキシが例外を発生させる可能性があります。この例外は、使用ブロックに気づかれません。 –
[WCFクライアントの\\使用ブロック問題の最善の回避策は何ですか?](http://stackoverflow.com/questions/573872/what-is-the-best-workaround-for-the- wcf-client-using-block-issue) –