解决方案 »

  1.   

    msdn上ProcessThread类页面里写了:"若要获取与当前进程关联的所有 ProcessThread 对象的集合,请获取 Process 实例的 Threads 属性。"比如:var threads = Process.GetCurrentProcess().Threads;
      

  2.   

    我是想用C#实现,让我的程序在指定的CPU核上运行。有帖子提到用
    ProcessThread 
    IdealProcessor
    ProcessorAffinity
    但是我不知道怎么用
    我的代码
    var threads = Process.GetCurrentProcess().Threads;
               
                foreach (ProcessThread pt in threads)
                {
                    pt.IdealProcessor = 1;
                    pt.ProcessorAffinity = (IntPtr)0x0001;
                }
    不管用。
      

  3.   

    我是看了变成之美,让CPU占用率曲线听你指挥。书上直说了单核CPU情况下的方法。我想实现多核CPU下的实现方法。
    我的程序
    var threads = Process.GetCurrentProcess().Threads;
               
                foreach (ProcessThread pt in threads)
                {
                    pt.IdealProcessor = 1;
                    pt.ProcessorAffinity = (IntPtr)0x0001;
                }            Process.GetCurrentProcess().ProcessorAffinity = (IntPtr)0x0001;
                            //可以手工输入1-100任意数值的暂用率,动态设定
                Console.Write("Which percent you will to use (Range(1-100),Start from 1):");
                string percent = Console.ReadLine();
                float level = 1;
                float.TryParse(percent, out level);            PerformanceCounter p = new PerformanceCounter("Processor", "% Processor Time", "0");
                            
                while (true)
                {
                    float nv = p.NextValue();
                    if (nv >= level)
                        System.Threading.Thread.Sleep(10);
                    else {
                       
                    }
                }
      

  4.   

    我用任务管理器看CPU没什么变化。但是 p.NextValue();有取到100.00的时候。
      

  5.   

    把while(true)里面的东西全注释掉就能看出来效果了。
    这代码不对,p.NextValue();这样不停的取的话,大部分时间不是0,就是100,那总会执行到Sleep,所以没有效果。
      

  6.   

    注释以后,指定核的使用率就一直是100%了。
    那我要如何控制指定核的CPU使用率是50%呢?