c# - 更改控制台 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
意味着亲和力没有改变。有什么问题?我怎样才能改变亲和力?
解决方案
正如@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}");
}