Microsoft.Languages.Editor.Tasks.IdleTimeAsyncTaskQueue.IncreasePriority C# (CSharp) Method

IncreasePriority() public method

public IncreasePriority ( object tag ) : void
tag object
return void
        public void IncreasePriority(object tag) {
            for (int i = 0; i < _taskQueue.Count; i++) {
                var task = _taskQueue[i];

                if (task.Tag == tag) {
                    _taskQueue.RemoveAt(i);
                    _taskQueue.Insert(0, task);
                }
            }
        }

Usage Example

示例#1
0
        public void OperationsTest() {
            var results = new List<Result>();
            var queue = new IdleTimeAsyncTaskQueue(_editorShell);

            var ta = new TaskAction(1, results);
            queue.Enqueue(ta.Action, ta.CallBackAction, typeof(TaskAction));

            ta = new TaskAction(2, results);
            queue.Enqueue(ta.Action, ta.CallBackAction, typeof(TaskAction));

            ta = new TaskAction(3, results);
            queue.Enqueue(ta.Action, ta.CallBackAction, typeof(TaskAction));

            RunThreads();

            results.Count.Should().Be(3);
            results[0].Id.Should().Be(1);
            results[1].Id.Should().Be(2);
            results[2].Id.Should().Be(3);

            results.Clear();

            ta = new TaskAction(1, results);
            object o1 = 1;
            queue.Enqueue(ta.Action, ta.CallBackAction, o1);

            ta = new TaskAction(2, results);
            object o2 = 2;
            queue.Enqueue(ta.Action, ta.CallBackAction, o2);

            ta = new TaskAction(3, results);
            object o3 = 3;
            queue.Enqueue(ta.Action, ta.CallBackAction, o3);

            queue.IncreasePriority(o3);
            RunThreads();

            results.Count.Should().Be(3);
            results[0].Id.Should().Be(3);
            results[1].Id.Should().Be(1);
            results[2].Id.Should().Be(2);
        }