У меня есть WPF-приложение, которое использует несколько фоновых потоков для предварительной компиляции LINQ-запросов и предварительного кеширования некоторых значений, которые понадобятся позже.TPL используется для запуска этих задач:
var newTask = new Task(taskAction, myCancelToken, TaskCreationOptions.LongRunning);
newTask.Start();
Это работает, задачи распределены по нескольким ядрам процессора и т. Д. Однако эти потоки вызывают высокую загрузку процессора, что заметно в пользовательском интерфейсе, который имеет тенденциюспотыкаться или даже зависать, пока потоки не закончены.
Итак, что может быть разумным способом сгладить пользовательский интерфейс.Проведя исследования, я обнаружил, что не следует придавать нитям особые приоритеты.Другие подразумевают, что частое использование Thread.Sleep () было подходящим способом, который мне кажется немного устаревшим и хакерским.
Есть ли дополнительные способы, о которых я не знаю?Есть ли реальные недостатки в приоритетности потоков (что невозможно через TPL напрямую, afaik)?
Заранее спасибо!