2008-08-23 76 views
14

由於MSDN概述here,ICommunicationObject上的Close方法可能會拋出兩種類型的異常。我明白爲什麼Close方法可以拋出這些異常,但我不明白的是爲什麼服務代理上的Dispose方法調用Close方法而未嘗試使用它。 Dispose方法不是你想要的地方嗎?確保你不會拋出任何異常?關閉和處理WCF服務

回答

9

它似乎是.NET代碼中的常見設計模式。 Framework design guidelines

除了Dispose()之外,考慮提供方法Close(),如果close是區域中的標準術語。這樣做時,它是您做出關閉執行相同的處置重要...

這裏是一個blog post在這裏您可以找到辦法解決這個System.ServiceModel.ClientBase設計問題

+0

在VS 2008中使用WCF代理生成器時,我添加服務引用的代碼是錯誤的代碼,因爲沒有良好的做法處置(關閉)? – Kiquenet 2010-11-08 09:49:20

9

是,通常Dispose是您希望確保異常不會拋出的地方之一。但是,基於此MSDN forum thread這種行爲有一些歷史原因。因此,推薦的模式是try {Close}/catch {Abort}範例。

+0

我得到http://social.microsoft.com/error/error404.aspx鏈接。 – Kiquenet 2010-11-08 10:46:46