Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Process.PrivateMemorySize64返回提交的内存而不是私有内存_C#_.net - Fatal编程技术网

C# Process.PrivateMemorySize64返回提交的内存而不是私有内存

C# Process.PrivateMemorySize64返回提交的内存而不是私有内存,c#,.net,C#,.net,我正在用C#编写一个使用.NET4.5的程序,该程序允许我监视特定进程的内存、CPU和网络使用情况,然后根据需要绘制数据图表 为了获得特定进程的内存使用情况,我正在检查进程对象的属性。我希望看到该进程使用的私有内存,但是它显示了提交中的内存量,正如Windows资源监视器所确认的那样 我的问题是: 1) 有人知道为什么会发生这种错误吗? 2) 有解决办法吗? 3) 如果没有修复,是否有另一种简单的方法可以获取为进程保留的私有内存 以下是我的代码的相关部分: using System; // I

我正在用C#编写一个使用.NET4.5的程序,该程序允许我监视特定进程的内存、CPU和网络使用情况,然后根据需要绘制数据图表

为了获得特定进程的内存使用情况,我正在检查
进程
对象的属性。我希望看到该进程使用的私有内存,但是它显示了提交中的内存量,正如Windows资源监视器所确认的那样

我的问题是:

1) 有人知道为什么会发生这种错误吗? 2) 有解决办法吗? 3) 如果没有修复,是否有另一种简单的方法可以获取为进程保留的私有内存

以下是我的代码的相关部分:

using System;

// I add all the open Processes to an array
Process[] localAll = Process.GetProcesses();

// I then add all the processes to a combobox to select from
// There's a button that updates labels with requested info

Process[] p = Process.GetProcessesByName(comboBox1.SelectedItem.ToString());
label1.Text = p[0].PrivateMemorySize64.ToString() + " bytes";

从你的评论中,你说你正在寻找私人工作台。它出现在这个链接中 它确实不是Process类的一部分。您必须改用性能计数器

从另一个答案复制并粘贴,以防由于某种原因被删除

using System;
using System.Diagnostics;

class Program {
    static void Main(string[] args) {
        string prcName = Process.GetCurrentProcess().ProcessName;
        var counter = new PerformanceCounter("Process", "Working Set - Private", prcName);
        Console.WriteLine("{0}K", counter.RawValue / 1024);
        Console.ReadLine();
    }
}

再一次..当我们看不到您当前正在使用的代码时,很难判断出问题出在哪里。。通过阅读PrivateMemorySize64的文档,显示您的代码肯定会有所帮助,提交大小正是我希望它返回的大小。你说的“私人内存”到底是什么意思?你说的是私人工作台吗?是的,我指的是私人工作台。我为这种模糊性道歉。请注意,虽然
处理.PrivateMemorySize64
访问实际上是即时的,但创建性能计数器需要相当长的时间(秒),并且在需要高性能或实时报告的应用程序中可能无法接受。由于
Process
PerformanceCounter
IDisposable
的后代,您还必须使用
包装