我们在办公室有一个复杂的场景,我们有多个独立的应用程序,也可以组合成一个工作流程。我现在正在研究避免为这一个工作流程运行六个应用程序的策略,并且我相当确信最合适的解决方案是编写一个按顺序运行这些较小应用程序的总体应用程序。 / p>
应用不会互相依赖'这样的结果,但它们必须在特定的实例中运行,如果步骤1失败,则无法运行第2步等。回滚是不必要的。有些应用程序用于独立方案以及此工作流程,因此似乎控制应用程序可以让我重复使用这些应用程序,而不是重复代码。
控制应用程序还允许工作流程可扩展;我可以"插入"如果对工作流程进行了必要的修改,则在步骤1和步骤2之间执行新步骤。此外,它应该允许我做一些事情,比如建立一个队列系统,这样工作流就可以不断运行。
我的想法是否在正确的轨道上?这种方法有限制吗?
答案 0 :(得分:0)
1)如果您拥有这些较小应用程序的源代码,那么最好的办法就是重新创建一个充当“工作区”的整个应用程序,工作的各个步骤直接包含在这个更大的应用程序中。 / p>
这种方法的好处:
执行速度更快(而不是每次只使用一个新流程/应用程序时加载)
更简单的部署(一个应用程序比X简单)
更好和定制的gui
2)如果您没有这些应用程序的源代码,那么重新创建这些应用程序是不可能的(不包括逆向工程),您的方法似乎是您的方案可能的唯一方法。
在这种情况下,如果这些应用程序没有可供使用的API,那么最愚蠢且最有效的方法就是简单地使用System.Diagnostics.Process
class必须在必要时为每个应用程序启动一个进程。
这是这种方法的一个例子:
Process process = new Process();
string path = @"C:\path\to\the\app1.exe";
ProcessStartInfo processStartInfo = new ProcessStartInfo(path);
processStartInfo.UseShellExecute = false;
process.StartInfo = processStartInfo;
process.Start();
依此类推......每次你想要启动一个应用程序。
要杀死这些应用程序,您有两种可能性,请手动终止该过程
通过调用process.Kill()
或让应用程序自杀