c# - 在整个程序 c# 中调用变量时出现问题

标签 c# variables global-variables call

我认为这很简单,但我对如何设置变量“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/

相关文章:

c - c中的静态变量

c - 函数指针与全局变量

variables - 定义相互依赖的变量

c++ - 仅 header 库中的全局变量

c# - 在 Visual Studio 2008 中调试 Web 服务时如何避免超时错误

javascript - 使用 EditorTemplate 时,使用 javascript 进行 Dropdownlist Change 事件

c# - C# 中的 boolean 检查;转换代码

c# - 运行测试时特定机器上出现 OutOfMemoryException

不创建 C++ 全局类变量

c++ - 在 main 之前调试对全局变量的赋值