get {
lock (registeredChannels.SyncRoot)
{
- IChannel[] channels = new IChannel[registeredChannels.Count];
-
- for (int i = 0; i < registeredChannels.Count; i++)
- channels[i] = (IChannel) registeredChannels[i];
-
- return channels;
+ ArrayList list = new ArrayList ();
+
+ for (int i = 0; i < registeredChannels.Count; i++) {
+ IChannel ch = (IChannel) registeredChannels[i];
+ if (ch is CrossAppDomainChannel) continue;
+ list.Add (ch);
+ }
+
+ return (IChannel[]) list.ToArray (typeof(IChannel));
}
}
}
lock (registeredChannels.SyncRoot)
{
- if (!registeredChannels.Contains ((object) chnl))
- throw new RemotingException ();
-
- registeredChannels.Remove ((object) chnl);
+ for (int n=0; n<registeredChannels.Count; n++)
+ {
+ if (registeredChannels [n] == (object)chnl) {
+ registeredChannels.RemoveAt (n);
+ IChannelReceiver chnlReceiver = chnl as IChannelReceiver;
+ if(chnlReceiver != null)
+ chnlReceiver.StopListening(null);
+ return;
+ }
+ }
+
+ throw new RemotingException ("Channel not registered");
- IChannelReceiver chnlReceiver = chnl as IChannelReceiver;
- if(chnlReceiver != null)
- chnlReceiver.StopListening(null);
}
}