Работая под управлением Windows Server 2003, у меня есть несколько процессов, которые после завершения работы требуют нескольких минут, чтобы 100% процессор умер.
Используя Process Explorer для просмотра потоков процессов, я всегда вижу 2 потока, один из которых использует много ЦП и застрял в! Endthreadex
Есть идеи, что могло заставить эти процессы не умирать так долго? Есть ли способ заставить меня убить такой процесс?
Когда вы пытаетесь убить процесс, Windows сначала попытается завершить его изящно, используя обычные пути кода, прежде чем принудительно остановить его. Причина, по которой он застрял на 100% ЦП, скорее всего, заключается в том, что у вас есть цикл или что-то подобное в вашем разрыве, который крутится в ожидании чего-то (например, полного закрытия соединения с базой данных) без Thread.Sleep в нем. Возможно, что то, чего он ждет, никогда не произойдет (из-за аварийного выхода, вызванного его уничтожением), и поэтому он застревает, пока Windows не решит отключить его силой. Изучите свой код выключения для процесса, и вы должны найти виновника.
Думаю, подходит для SO на данном этапе.