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