更改控制台 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}");
}
在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}");
}