我目前需要使用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都可以访问的变量变得非常困难,因为它们位于不同的类中。
答案 0 :(得分:0)
await Task.Factory.StartNew(() => {KillCore() },
new System.Threading.CancellationToken(),TaskCreationOptions.PreferFairness,TaskScheduler.FromCurrentSynchronizationContext());
一旦您了解starting from here的工作原理,就应该用自己的令牌替换System.Threading.CancellationToken()
。