首页 > 解决方案 > 更改控制台 C# 程序的亲和性

问题描述

此页面中,以下代码是更改当前进程的亲和性的示例:

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        Process myProcess = Process.GetCurrentProcess();
        Console.WriteLine("ProcessorAffinity: {0}", myProcess.ProcessorAffinity);
        Process.GetCurrentProcess().ProcessorAffinity = (System.IntPtr)3;
        Console.WriteLine("ProcessorAffinity: {0} ", myProcess.ProcessorAffinity);
        Console.ReadKey();
    }
}

但对我来说输出是:

处理器亲和度:255

处理器亲和度:255

意味着亲和力没有改变。有什么问题?我怎样才能改变亲和力?

标签: c#console-applicationaffinity

解决方案


正如@ChetanRanpariya 在他的评论中提到的那样,问题是因为您更改ProcessorAffinity了一个进程对象(从第二次调用返回Process.GetCurrentProcess())并将其检查到另一个(从第一次调用返回Process.GetCurrentProcess())。这是更正的样本:

using (var currentProcess = Process.GetCurrentProcess())
{
    Console.WriteLine($"ProcessorAffinity: {currentProcess.ProcessorAffinity}");
    currentProcess.ProcessorAffinity = (System.IntPtr)3;
    Console.WriteLine($"ProcessorAffinity: {currentProcess.ProcessorAffinity}");
}

推荐阅读