예제 #1
0
            public void Dispose()
            {
                LinkedListNode <PriorityBindingEntry> binding = Interlocked.Exchange(ref _binding, null);

                if (binding == null)
                {
                    // Some system is trying to remove binding twice.
                    Debug.Assert(false);

                    return;
                }

                PriorityBindingEntry entry = binding.Value;

                if (!entry.HasCompleted)
                {
                    _bindings.Remove(binding);

                    entry.Dispose();

                    if (entry.Index >= _priorityLevel.ActiveBindingIndex)
                    {
                        _priorityLevel.ActivateFirstBinding();
                    }
                }
            }
예제 #2
0
            public void Dispose()
            {
                PriorityBindingEntry entry = _binding.Value;

                if (!entry.HasCompleted)
                {
                    _bindings.Remove(_binding);

                    entry.Dispose();

                    if (entry.Index >= _priorityLevel.ActiveBindingIndex)
                    {
                        _priorityLevel.ActivateFirstBinding();
                    }
                }
            }