Я бы попробовал с ответом Джонса, а затем реализовал ответ Муэка.
У вас в коде где-то замкнутые циклы.Несмотря на низкий приоритет (если вы его использовали) - если у вас есть цикл, который не возвращает элемент управления планировщику потоков ядра, он будет использовать весь ЦП, пока элемент управления не будет взят из него.Например, у вас может быть:
while (!_shouldStop)
{
DoProcessing();
}
Это действительно IS плохо, потому что оно, безусловно, будет использовать весь ваш процессор.
Чтобы решить эту проблему, самый простой способ - этоиспользуйте либо Sleep (100), либо Sleep (0) внутри цикла, что-то вроде:
while (!_shouldStop)
{
DoProcessing();
Thread.Sleep(0);
}
Есть также более эффективные (и несколько более сложные способы) сделать это - например, события - но для начала,с этим ваше приложение будет работать намного лучше.