【发布时间】:2021-07-27 07:00:50
【问题描述】:
我有一个包含 2 个项目的解决方案:
xxxMode2 可以构建为独立的桌面应用程序。 xxxTable 项目是一个启动器。我会从 xxxTable 调用 xxxMode2。
以下是我用来从项目 xxxTable 调用项目 xxxMode2 的 2 个代码示例。我们称它们为 A 和 B。
// Code A
private void Button_Click_2(object sender, RoutedEventArgs e)
{
Xxxxx.MainWindow mnw = new Xxxxx.MainWindow();
mnw.Owner = this;
mnw.ShowDialog();
}
// Code B
private void Button_Click_2(object sender, RoutedEventArgs e)
{
string currentFolder = Directory.GetCurrentDirectory();
ProcessStartInfo pInfo = new ProcessStartInfo("xxx.xxx.xx.exe");
pInfo.WorkingDirectory = currentFolder;
Process p = Process.Start(pInfo);
}
在C#中,使用Classic方式(代码A)和Process方式(代码B)从主项目调用子项目有什么区别?
当我想在我的代码中启动一个 exe extern 时,我会使用这个 ProcessStartInfo() 方法。从我的主项目到我的子项目这样做是正确的还是有意义的?
【问题讨论】:
-
第一个是直接实例化主窗口类,这里你可以控制它的各种属性。而在 processinfo 的情况下,它只是启动另一个应用程序,不管它是什么类型。
-
“调用子项目” - 是一个错误的术语。当另一个程序集是解决方案的一部分时,它会被链接、引用,您可以使用它的所有
public类型、调用带有参数的方法、将结果作为返回值等。启动一个进程,您将它作为“黑色”运行框”,并且需要某种形式的进程间通信 (IPC) 才能执行任何操作。