我正在寻找在.net应用程序中执行外部程序。
我需要为该程序分配一个具体的处理器。 我需要在不同的处理器上多次执行程序。 我需要等待外部程序终止。
为了简化我已经完成了一个小的尖峰(控制台)应用程序来处理它:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExecuteExternalInParallelWithAffinity
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i < 3; i++)
{
var processnumber = i;
Task.Factory.StartNew(() =>
{
Process p = Process.Start("notepad.exe");
p.ProcessorAffinity = (IntPtr)processnumber;
}).ContinueWith(t =>
{
Console.Out.WriteLine(string.Format("Process ended on processor: {0}", processnumber));
});
}
Console.ReadKey();
}
}
}
我的问题:
1.-我可以在执行过程之前分配处理器关联
2.-尽管我在任务管理器上签入Notepad
,但所有这些都被分配给处理器0。
答案 0 :(得分:0)
Process
类不支持在新进程启动之前设置某些设置。但是,原生CreateProcess
API确实允许这样做。你必须使用那个。
以暂停状态启动进程。设置您喜欢的所有设置。然后,恢复它。这样,该进程中的所有代码都将在新设置下运行。