C# --- 使用代码开启一个进程
方法一
using (Process myProcess = new Process())
{
myProcess.StartInfo.UseShellExecute = false;
// You can start any process, HelloWorld is a do-nothing example.
myProcess.StartInfo.FileName = "C:\\HelloWorld.exe";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.Arguments = arguments
myProcess.Start();
// This code assumes the process you are starting will terminate itself.
// Given that it is started without a window so you cannot terminate it
// on the desktop, it must terminate itself or you can do it programmatically
// from this application using the Kill method
//or give a timeout time as shown follow
//myProcess.WaitForExit(1000)
}
方法二
var startInfo = new ProcessStartInfo()
{
UseShellExecute = true,
CreateNoWindow = false,
FileName = exe,
WindowStyle = ProcessWindowStyle.Hidden,
WorkingDirectory = workDirectory,
Arguments = arguments
};
using Process exeProcess = Process.Start(startInfo);
var completed = exeProcess != null && exeProcess.WaitForExit(1000);
Example — 使用进程运行nuget.exe, 下载一个Nuget library
var nugetExe = Path.Combine(exeDirectory, "lib/nuget.exe");
var cmd = $"install {MyNugetLibrary} -OutputDirectory \"{OutputFolder}\"";
var startInfo = new ProcessStartInfo()
{
UseShellExecute = false,
RedirectStandardError = true,
CreateNoWindow = false,
FileName = nugetExe,
WindowStyle = ProcessWindowStyle.Hidden,
WorkingDirectory = exeDirectory,
Arguments = cmd
};
using (Process exeProcess = Process.Start(startInfo))
{
var completed = exeProcess.WaitForExit(1000);
}