タグ付けされた質問 「wcf-client」

26
WCFクライアントの「using」ブロックの問題の最善の回避策は何ですか?
usingブロック内でWCFサービスクライアントをインスタンス化するのが好きです。これは、実装するリソースを使用するための標準的な方法であるためですIDisposable。 using (var client = new SomeWCFServiceClient()) { //Do something with the client } ただし、このMSDNの記事に記載されているように、WCFクライアントをusingブロックでラップすると、クライアントがエラー状態(タイムアウトや通信の問題など)になるエラーをマスクできます。簡単に言えば、Dispose()が呼び出されると、クライアントのClose()メソッドが起動しますが、障害のある状態であるためエラーがスローされます。その後、元の例外は2番目の例外によってマスクされます。良くない。 MSDN記事で推奨されている回避策は、usingブロックの使用を完全に回避し、代わりにクライアントをインスタンス化して次のようなものを使用することです。 try { ... client.Close(); } catch (CommunicationException e) { ... client.Abort(); } catch (TimeoutException e) { ... client.Abort(); } catch (Exception e) { ... client.Abort(); throw; } usingブロックと比較して、それは醜いと思います。そして、クライアントが必要になるたびに書くコードがたくさん。 幸い、私はIServiceOrientedでこのような他のいくつかの回避策を見つけました。あなたは次から始めます: public delegate void UseServiceDelegate<T>(T proxy); …
404 c#  vb.net  wcf  using  wcf-client 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.