要建一个优惠卷网站怎么做,网站建设的淘宝模板,怎么选择邯郸做网站,邢台宇鹏网站建设通常情况下我们关闭一个WCF链接都是简单地写把ICommunicationObject.Close()方法#xff0c;但是这个方法有个问题就是当调用发生异常时#xff0c;Close()会发生次生的异常#xff0c;导致链接不能正常关闭。如果当这种异常很多时#xff0c;必然对系统的稳定性有很大的影…通常情况下我们关闭一个WCF链接都是简单地写把ICommunicationObject.Close()方法但是这个方法有个问题就是当调用发生异常时Close()会发生次生的异常导致链接不能正常关闭。如果当这种异常很多时必然对系统的稳定性有很大的影响所以我们必须要考虑异常发生后如何关闭链接的问题。我们可以写一个扩展来专门关闭WCF链接而不是使用原来的Close public static void CloseConnection(this ICommunicationObject myServiceClient) { if (myServiceClient.State ! CommunicationState.Opened) { return; } try { myServiceClient.Close(); } catch (CommunicationException ex) { Debug.Print(ex.ToString()); myServiceClient.Abort(); } catch (TimeoutException ex) { Debug.Print(ex.ToString()); myServiceClient.Abort(); } catch (Exception ex) { Debug.Print(ex.ToString()); myServiceClient.Abort(); throw; } }然后可以使用这个扩展 protected void Close(T client) { if (client ! null) { IChannel iChannel client as IChannel; if (iChannel ! null) iChannel.CloseConnection(); else { IDisposable iDisposable client as IDisposable; if (iDisposable ! null) iDisposable.Dispose(); } } } 转载于:https://www.cnblogs.com/facebuyer/archive/2009/04/22/1441005.html