【问题标题】:Save last value in the variable and display保存变量中的最后一个值并显示
【发布时间】:2016-04-18 07:02:44
【问题描述】:

我的程序有问题它的功能是在屏幕上显示进程消耗了多少内存并显示内存使用峰值内存,所以我的问题是当我关闭进程时,程序停止显示内存峰值。

这里显示峰值内存的部分代码:

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();
}

打开计算器的过程:

用封闭式计算器的过程:

即使我关闭了进程,我也希望他一直显示在峰值记录的最后一个值。

【问题讨论】:

    标签: c# .net visual-studio variables


    【解决方案1】:

    您需要将标签的当前文本值传递给 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 函数返回之前将结果转换为字符串

    【讨论】:

    • 感谢史蒂夫的工作!也谢谢你的提示,我还是初学者!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多