我目前需要开发与UWP应用程序的CPU压力测试功能。它稍后将被集成到主应用程序中,目前正在专门的测试“应用程序”中开发它。基本上,我需要的功能,以设置cpu使用率为100%,并回到正常时,用户的请求。目前,事件处理程序可以是简单的button_clock处理程序,如下所示:
private void StawpButton_Click(object sender, RoutedEventArgs e)
{
//should stop stress-testing somehow...
}
对于烧录内核,我使用了This nifty code,它使用while(真正的循环)进行压力测试。然而,这是一种相当简单的方法,我不知道如何关闭这个kond进程。
我当前的代码如下所示:
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都可以访问的变量也相当困难,因为它们位于不同的类中。
发布于 2019-01-09 09:03:14
await Task.Factory.StartNew(() => {KillCore() },
new System.Threading.CancellationToken(),TaskCreationOptions.PreferFairness,TaskScheduler.FromCurrentSynchronizationContext());
一旦你了解了System.Threading.CancellationToken()
是如何工作的,你就应该用你自己的令牌替换掉它们,starting from here。
https://stackoverflow.com/questions/54090798
复制相似问题