System.Runtime.Remoting.Channels.RegisteredChannelList.FindChannelIndex C# (CSharp) Метод

FindChannelIndex() приватный Метод

private FindChannelIndex ( IChannel channel ) : int
channel IChannel
Результат int
        internal int FindChannelIndex(IChannel channel)
        {
            Object chnlAsObject = (Object)channel;
        
            for (int i = 0; i < _channels.Length; i++)
            {
                if (chnlAsObject == (Object)GetChannel(i))
                    return i;                    
            }

            return -1;
        } // FindChannelIndex

Same methods

RegisteredChannelList::FindChannelIndex ( String name ) : int

Usage Example

Пример #1
0
        public unsafe static void UnregisterChannel(IChannel chnl)
        {
            bool flag = false;

            RuntimeHelpers.PrepareConstrainedRegions();
            try
            {
                Monitor.Enter(ChannelServices.s_channelLock, ref flag);
                if (chnl != null)
                {
                    RegisteredChannelList registeredChannelList = ChannelServices.s_registeredChannels;
                    int num = registeredChannelList.FindChannelIndex(chnl);
                    if (-1 == num)
                    {
                        throw new RemotingException(Environment.GetResourceString("Remoting_ChannelNotRegistered", new object[]
                        {
                            chnl.ChannelName
                        }));
                    }
                    RegisteredChannel[] registeredChannels = registeredChannelList.RegisteredChannels;
                    RegisteredChannel[] array           = new RegisteredChannel[registeredChannels.Length - 1];
                    IChannelReceiver    channelReceiver = chnl as IChannelReceiver;
                    if (channelReceiver != null)
                    {
                        channelReceiver.StopListening(null);
                    }
                    int num2 = 0;
                    int i    = 0;
                    while (i < registeredChannels.Length)
                    {
                        if (i == num)
                        {
                            i++;
                        }
                        else
                        {
                            array[num2] = registeredChannels[i];
                            num2++;
                            i++;
                        }
                    }
                    if (ChannelServices.perf_Contexts != null)
                    {
                        ChannelServices.perf_Contexts->cChannels--;
                    }
                    ChannelServices.s_registeredChannels = new RegisteredChannelList(array);
                }
                ChannelServices.RefreshChannelData();
            }
            finally
            {
                if (flag)
                {
                    Monitor.Exit(ChannelServices.s_channelLock);
                }
            }
        }
All Usage Examples Of System.Runtime.Remoting.Channels.RegisteredChannelList::FindChannelIndex