コード例 #1
0
        private void Remove(ITransport instance)
        {
            if (instance == null)
            {
                return;
            }

            lock ( EstablishedTransports )
            {
                var matches = EstablishedTransports.Where(t => object.ReferenceEquals(t.Value, instance)).Select(t => t.Key).ToArray();
                foreach (var key in matches)
                {
                    EstablishedTransports.Remove(key);
                }
            }
            lock ( RunningTransports )
            {
                var matches = RunningTransports.Where(t => object.ReferenceEquals(t.Value, instance)).Select(t => t.Key).ToArray();
                foreach (var key in matches)
                {
                    RunningTransports.Remove(key);
                }
            }

            instance.Terminate();
        }
コード例 #2
0
        private void Remove(ITransport instance)
        {
            if (instance == null)
            {
                return;
            }

            foreach (var one in EstablishedTransports.ToArray())
            {
                one.Value.TryRemove(instance, out _);
                if (one.Value.IsEmpty)
                {
                    EstablishedTransports.TryRemove(one.Key, out _);
                }
            }

            lock ( RunningTransports )
            {
                RunningTransports.Remove(instance);
            }

            instance.Terminate();
        }