【发布时间】:2020-07-01 23:42:26
【问题描述】:
我从循环内部启动一个 .exe 文件,该 .exe 文件将在完成其工作时自行终止,因此我对此进行了检查 (P_Exited)。
-
问题是如何在循环中启动 .exe 文件并保持 UI 处于活动状态,以便我可以看到一些反馈 - 比如它通过了多少次等(我认为一些线程会有所帮助)
-
问题是我有时需要提前退出进程(在它自行终止之前),例如我需要在运行 3 小时后退出进程,我该如何实现?
谢谢你帮助我
public void start_opt()
{
int pocetEas = eas_list.CheckedItems.Count;
log.Clear();
string[] EA_pole = nazevEA.ToArray();
string[] INI_pole = nazevINI.ToArray();
for (int i = 0; i < pocetEas; i++)
{
DateTime localDate = DateTime.Now;
log.AppendText(localDate + " - Optimalizace " + (i + 1) + " z " + pocetEas.ToString() + " spuštěna \r\n");
try
{
Process P = new Process();
P.Exited += new EventHandler(P_Exited);
P.StartInfo.FileName = @Properties.Settings.Default.mt5_terminal;
P.StartInfo.Arguments = "/config:" + Properties.Settings.Default.mt5_appdata + "\\MQL5\\files\\" + INI_pole[i];
P.EnableRaisingEvents = true;
P.Start();
}
catch
{
}
if (hotovychEA < i + 1)
{
timer1.Start();
while (hotovychEA < i + 1)
{
Thread.Sleep(1000);
}
}
}
}
private void P_Exited(object sender, EventArgs e){
hotovychEA++;
}
【问题讨论】:
-
不要使用
Thread.Sleep,你在UI线程上(我相信)。使您的功能async并使用await Task.Delay()