嗨,我的文件夹里面有多个程序。exe,我想单击一个按钮,它将启动所有安装,但必须等待一个结束才能启动另一个安装。
我还需要取消按钮,该按钮将停止进程。
我需要用wpf制作。
尝试使用复选框,但是一旦全部选中并单击按钮,就只能开始一个安装。
答案 0 :(得分:0)
通常,如果您要运行大量安装并希望按顺序运行它们,我会设置一个Task.Factory
或BackgroundWorker
,这样您就不会阻塞UI线程了。我还要确保您使用MVVM来简化所有操作。
我将从为安装设置帮助程序类开始。如果要进行MVVM,则此类的设置显然会有所不同。
public class Programs
{
public string InstallName = "";
public string InstallPath = "";
public bool ExecuteInstall = false;
public int InstallProcessID = 0;
}
然后根据您的复选框设置它们的集合并标记它们是否运行。使用MVVM,您可以将executeInstall直接绑定到一个复选框。
然后一个起作用的函数,并由一个单独的线程调用。关键在于调用以及如何使用Process
try
{
using (Process myProcess = new Process())
{
myProcess.StartInfo.FileName = <Your program collection object>.InstallPath;
myProcess.Start();
<Your program collection object>.InstallProcessID = myProcess.Id;
myProcess.WaitForExit();
// Any follow up code after install has completed.
}
}
catch (Exception ex)
{
// Error message that uses ex
}
取消按钮可以查找进程ID,然后终止该进程。您也可以创建一个临时的int var来存储正在安装的应用程序的当前进程ID,而不用在集合中进行设置。
所以这是总的想法。我建议对程序设计进行更多研究,因为stackoverflow更加是特定问题而不是如何写东西的特定地方。