问题描述:当我们用C#打开外部应用的时候一般使用的方法是:
System.Diagnostics.Process.Start(Path.Combine(Application.StartupPath, "tool", "toolbox.exe"));
然而有些时候,这种方法会失败。此时就需要考虑是不是因为跨线程操作或外部exe有传入参数导致的。
尝试以下两种方法:
方法1:异步线程操作
if (this.InvokeRequired)
{
this.Invoke(new Action(()=> {
System.Diagnostics.Process.Start(Path.Combine(Application.StartupPath, "tool", "toolbox.exe"));
}));
}
方法二:通过ProcessStartInfo打开
System.Diagnostics.ProcessStartInfo process = new System.Diagnostics.ProcessStartInfo();
process.FileName = Path.Combine(Application.StartupPath, "tool", "toolbox.exe");
process.UseShellExecute = false;
process.WorkingDirectory = Path.Combine(Application.StartupPath, "tool");
process.CreateNoWindow = false;
System.Diagnostics.Process.Start(process);
总结:我的外部exe通过第二中方法成功解决了。以后遇到类似问题可以尝试这两种方式。