【发布时间】:2015-06-13 18:29:30
【问题描述】:
我有一个启动第二个 exe 的方法。我遇到的问题是,如果我在 Visual Studio 中处于调试模式,并且我在 Process.Start 调用之后直接放置一个断点,我的第二个应用程序会立即启动,但是如果我在 VS 中没有断点或运行我的主 C# 应用程序在 VS 之外,通过 Process.Start 启动我的第二个应用程序可能需要两分钟。我的方法在下面,我在“if(null != _ProcessMine)”行放置断点以查看第二个应用程序的立即启动。我将第二个 exe 的启动放在工作线程中,因为当我关闭主 exe 时,我希望第二个 exe 也关闭。
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();
}
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c#