更改控制台 C# 程序的关联

Changing the affinity of a Console C# program

this page中,以下代码是改变当前进程affinity的例子:

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

但我的输出是:

ProcessorAffinity: 255

ProcessorAffinity: 255

意思是亲和力没有改变。有什么问题?以及如何更改亲和力?

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

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