我认为这很简单,但我对如何设置变量“result”感到困惑(见下面的代码),所以我可以稍后在程序中调用它,当我希望计时器显示当前 RAM 使用情况时按安装的总 RAM 收集使用百分比。 WMI 收集已安装 RAM 的方式一直让我失望,因为它必须执行结果 ["TotalVisibleMemorySize"]。将整个代码块放在计时器中的问题是它每 2 秒刷新一次,这实际上会滞后计数器,因为 WMI 很慢。谢谢!
private void Form1_Load(object sender, EventArgs e)
{
ObjectQuery wql = new ObjectQuery("SELECT * FROM Win32_OperatingSystem");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wql);
ManagementObjectCollection results = searcher.Get();
foreach (ManagementObject result in results)
{
label1.Text = Convert.ToInt32(result["TotalVisibleMemorySize"]) + " KB";
}
}
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Value = (int)(performanceCounter1.NextValue() - Convert.ToInt32(result["TotalVisibleMemorySize"]));
label1.Text = "Processor Time: " + progressBar1.Value.ToString() + "%";
}
最佳答案
那么,您的结果变量在您的 Form1_Load 方法中。
您需要将其移出该范围,作为 Form1 的成员或全局成员(如 Program.cs。)
我建议不要做全局变量,而是创建一个私有(private)变量,例如:
public class Form1
{
private ManagementObjectCollection results;
... rest of code
}
然后当您需要时,您可以在 Form1 类的其他地方使用 results.Whatever
关于c# - 在整个程序 c# 中调用变量时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784906/