X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.ServiceModel%2FSystem.ServiceModel.Dispatcher%2FChannelDispatcher.cs;h=10834fc0ae81deafcb1f22b0a54bd2ab3f12b939;hb=5b6c684d26995e720a05ff5d1cd2210e31d041ad;hp=15731e65a3a594d4909d5bdf3a59236debb2f5ab;hpb=15af51806d816ad6ad966bc1dfbdd232b63fde52;p=mono.git diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs index 15731e65a3a..10834fc0ae8 100644 --- a/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs +++ b/mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ChannelDispatcher.cs @@ -452,8 +452,11 @@ namespace System.ServiceModel.Dispatcher public void CloseInput () { foreach (var ch in channels.ToArray ()) { - if (ch.State == CommunicationState.Closed) - RemoveChannel (ch); + if (ch.State == CommunicationState.Closed) { + lock (channels) { + RemoveChannel (ch); + } + } else { try { ch.Close (close_timeout - (DateTime.Now - close_started));