我有一个启动第二个exe的方法。我遇到的问题是,如果我在Visual Studio中处于调试模式,并且在Process.Start调用后直接放置断点,我的第二个应用程序立即启动,但如果我在VS中没有断点或运行我的主C#应用程序在VS之外,通过Process.Start启动我的第二个应用程序最多可能需要两分钟的时间。我的方法是在下面,我把我的断点看到第二个应用程序的立即启动是在“if(null!= _ProcessMine)”行。我把第二个exe文件的启动放在了一个工作线程中,因为当我关闭主exe文件时,我想要关闭第二个exe文件。Process.Start需要很长时间才能启动外部应用程序
public static void RunBtnProcessThread(string processName, String sArgs, Button btn)
{
// disable the button until we release the newly launched process
btn.Enabled = false;
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (doWorkSender, doWorkArgs) =>
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = processName;
startInfo.Arguments = sArgs;
try
{
using (_ProcessMine = Process.Start(startInfo))
{
if(null != _ProcessMine)
_ProcessMine.WaitForExit();
}
}
catch (Exception ex)
{
string _Funk = ReflectionHelper.GetMethodFullName(MethodBase.GetCurrentMethod());
// error
Debug.Assert(false, "Error: " + ex.Message);
// Log error.
TraceUtil.LogException(_Funk, ex);
}
System.Threading.Thread.Sleep(500);
};
worker.RunWorkerCompleted += (completedSender, completedArgs) =>
{
btn.Enabled = true;
_ProcessMine)= null;
};
worker.RunWorkerAsync();
}
我已经编辑好标题:
你可以使用类似关闭它。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –