В настоящее время я нуждаюсь в разработке функций стресс-тестирования процессора с помощью приложения UWP. Позже он будет интегрирован в основное приложение, в настоящее время разрабатывая его в специальном тестовом «приложении». В основном мне нужна функциональность, чтобы установить использование процессора на 100% и вернуться к нормальному состоянию, когда пользователь запрашивает. В настоящее время обработчики событий могут быть простыми обработчиками button_clock, например:
private void StawpButton_Click(object sender, RoutedEventArgs e)
{
//should stop stress-testing somehow...
}
Для горения ядер я использовал Этот отличный код , который использует while (истинный цикл) для процессора стресс-тестирования. Однако это скорее метод «забыл и забыл», и я не знаю, как остановить этот процесс.
Мой текущий код выглядит так:
class CpuStresser
{
public CpuStresser()
{
//do something when initializing
}
public static void DoStress()
{
for (int i = 0; i < 32; i++)
{
Task.Run(() => KillCore());
}
}
public static Task KillCore()
{
Random rand = new Random();
long num = 0;
while (true)
{
num += rand.Next(100, 1000);
if (num > 1000000) { num = 0; }
}
}
}
Это хорошо работает для загрузки процессора на 100%, но я не могу закрыть задачи. Как лучше всего это сделать с помощью обработчиков событий?
Я попытался добавить условие в цикл while (true), но ошибка «не все пути кода возвращают значение» появляется быстро. Создание переменной, доступной как для задачи KillCore, так и для EventHandler, довольно сложно, поскольку они расположены в разных классах.