保存变量中的最后一个值并显示

时间:2016-04-18 07:02:44

标签: c# .net visual-studio variables

我的程序中有一个问题,它的功能是在屏幕上显示进程消耗多少ram时间并显示峰值内存使用率ram,这样我的问题是当我关闭进程时,程序停止显示最高记忆力。

这里是显示峰值ram的代码部分:

public string vmax()
{
    System.Diagnostics.Process[] ieProcs = Process.GetProcessesByName(label92.Text);
    double avvv = 0;
    string abi = null;

    try
    {
        if (ieProcs.Length > 0)
        {
            foreach (System.Diagnostics.Process p in ieProcs)
            {
                String physicalMem = p.PeakWorkingSet64.ToString();
                abi = physicalMem;
            }
        }

        avvv = double.Parse(abi);
        avvv = avvv * 0.001 / 1024;

        return avvv + " K";
    }
    catch
    {
        return "";
    }
}

private void timer1_Tick(object sender, EventArgs e)
{
    label90.Text = vmax();
}

使用开放计算器的过程:

enter image description here

关闭计算器的过程:

enter image description here

即使我关闭了这个过程,他仍然想要显示在峰值时记录的最后一个值。

1 个答案:

答案 0 :(得分:2)

您需要将vmax函数传入标签的当前文本值,并在活动进程之间不再列出该进程时将其返回

public string vmax(string prevValue)
{
    try
    {
        System.Diagnostics.Process[] ieProcs = Process.GetProcessesByName(label92.Text);
        if(ieProcs.Length == 0)
             return prevValue;
        ...
     }
     catch
     {
         return prevValue;
     }
}

private void timer1_Tick(object sender, EventArgs e)
{
    label90.Text = vmax(label90.Text);
}

说我还应该说你的所有字符串转换都有点令人困惑。 PeakWorkingSet64返回一个long,不需要将它转换为字符串,然后执行相同字符串的解析来执行一些计算。只需在微积分中使用long变量,并在从vmax函数返回之前将结果转换为字符串