Как добавить задачи приоритетные функциональные возможности

StackOverflow https://stackoverflow.com/questions/4067900

Вопрос

Я использую библиотеку задач для моего сжатия изображения. Я бы сжать множество файлов параллелизма. Но я хочу, чтобы сервис проводился только тогда, когда пользователь простаивает (или не более нечувствителенную задачу в программе).

Я знаю, что Threadpool не поддерживает функцию «Изменить приоритетную тему», поэтому задача также поддерживает эту функцию.

Могу ли я развить эту функциональность на более высоком уровне контроля? (Например, приоритет задачCheduler)

Это было полезно?

Решение

Как упоминалось @zengr, вы можете использовать приоритетный шаблон очереди, чтобы решить эту проблему. Есть на самом деле Хороший образец в MSDN реализации приоритетных очередей с использованием ConcurrentQueue<T> экземпляры на приоритет, а затем упаковывая, что с помощью обычай IProducerConsumerCollection<T> Реализация, которая тянет элементы из более высокой очереди приоритета до более низких. Этот тип реализации позволяет вашему производителю определять, сколько должно быть приоритетов, назначить приоритет при добавлении элемента и позволяет вашему потребителю работать на элементах с наивысшим приоритетом, сначала, не понимая, что приоритетного приоритета.

Другие советы

Вы можете создать пользовательский TaskScheduler для параллельной библиотеки задачи, а затем расписание задач на это, передавая экземпляр его к TaskFactory конструктор.

Вот один пример того, как это сделать: Планировщик задач с приоритетом

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top