Управляемый UWP CpuBurner - PullRequest
       24

Управляемый UWP CpuBurner

0 голосов
/ 08 января 2019

В настоящее время я нуждаюсь в разработке функций стресс-тестирования процессора с помощью приложения 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, довольно сложно, поскольку они расположены в разных классах.

1 Ответ

0 голосов
/ 09 января 2019
     await Task.Factory.StartNew(() => {KillCore() },
                                       new System.Threading.CancellationToken(),TaskCreationOptions.PreferFairness,TaskScheduler.FromCurrentSynchronizationContext());

вы должны заменить System.Threading.CancellationToken() своим собственным токеном, как только вы узнаете, как они работают, начиная с этого момента .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...