我有一些监控CPU和内存使用情况的应用程序。当我这样做时:
double currentMemFree = (int)perfMemCount.NextValue();
progBarMem.Value = (int)(totMem1 - currentMemFree);
double currentCpuPercentage = (int)perfCpuCount.NextValue();
progBarCpu.Value = (int)currentCpuPercentage;
通常在Initializecomponent()旁边;它工作,但它只是在开始时加载mem使用,这个值是4ever.When我写这样:
while(true)
{
double currentMemFree = (int)perfMemCount.NextValue();
progBarMem.Value = (int)(totMem1 - currentMemFree);
double currentCpuPercentage = (int)perfCpuCount.NextValue();
progBarCpu.Value = (int)currentCpuPercentage;
Thread.Sleep(1000);
}
程序没有启动。它开始调试但是程序没有启动。当我按下F5时,按下"状态"小组写的:加载符号......和这些东西。感谢。
答案 0 :(得分:1)
这是因为这一行Thread.Sleep(1000);
导致你的线程休眠1秒钟,并且由于无限循环它永远不会停止睡眠。您必须将此逻辑放在UI线程之外,因此更新将在后台线程上进行,而不会干扰您的UI。
有很多方法可以解决这个问题......例如Threads,BackgroundWorker,Task,async / await ...所有都有它们的优点和缺点。做一些研究,尝试一下,选择最适合你需求的研究。