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

C# 更改控制台C程序的关联性,c#,console-application,affinity,C#,Console Application,Affinity,在中,以下代码是更改当前进程关联性的示例: using System; using System.Diagnostics; class Program { static void Main() { Process myProcess = Process.GetCurrentProcess(); Console.WriteLine("ProcessorAffinity: {0}", myProcess.ProcessorAffi

在中,以下代码是更改当前进程关联性的示例:

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 Dimension在他的评论中所说,问题是因为您更改了第二次调用process.GetCurrentProcess返回的一个process对象的ProcessorAffinity,并在第一次调用process.GetCurrentProcess返回的另一个process对象中检查它。以下是更正后的示例:

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

Change Process.GetCurrentProcess.ProcessorAffinity=System.IntPtr3;到myProcess.ProcessorAffinity=System.IntPtr3;另外,在using语句中包装myProcess,如下所示:使用var myProcess=Process.GetCurrentProcess{..}@vasily.sib包装有什么帮助?@nano,Process instance正在帮助一些非托管资源,因此如果您不正确处理它,您的应用程序将泄漏。这也是建议您的程序是否在提升模式下运行管理员模式?没有此选项,您无法更改关联。