UWP控制的CpuBurner

时间:2019-01-08 11:24:25

标签: uwp task cpu stress-testing

我目前需要使用UWP应用程序开发CPU压力测试功能。它将稍后集成到主要应用程序中,目前正在专用测试“应用程序”中进行开发。基本上,我需要一些功能来将CPU使用率设置为100%,并在用户请求时恢复正常。当前,事件处理程序可以是简单的button_clock处理程序,如下所示:

private void StawpButton_Click(object sender, RoutedEventArgs e)
    {
        //should stop stress-testing somehow...
    }

对于燃烧核,我使用了This nifty code,它使用while(true循环)来对CPU进行压力测试。但是,这是一劳永逸的方法,我不知道该如何关闭这种过程。

我的当前代码如下:

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; }

        }

    }

}

这对于将cpu加载到100%的负载效果很好,但是我无法关闭任务。使用事件处理程序的最佳方法是什么?

我试图将条件添加到while(true)循环中,但是很快出现错误“并非所有代码路径都返回一个值”。同样,使KillCore任务和EventHandler都可以访问的变量变得非常困难,因为它们位于不同的类中。

1 个答案:

答案 0 :(得分:0)

     await Task.Factory.StartNew(() => {KillCore() },
                                       new System.Threading.CancellationToken(),TaskCreationOptions.PreferFairness,TaskScheduler.FromCurrentSynchronizationContext());

一旦您了解starting from here的工作原理,就应该用自己的令牌替换System.Threading.CancellationToken()