访问单独应用程序域中WPF应用程序的命令行参数

本文关键字:命令行 参数 应用程序 WPF 单独 应用程序域 访问 | 更新日期: 2023-09-27 18:19:32

是否有一种干净的方法来访问作为启动WPF应用程序的AppDomain.ExecuteAssembly调用的一部分传递的命令行参数?

我正在一个单独的应用程序域中旋转一个WPF应用程序,并将参数传递给该应用程序,如下所示:

AppDomain moduleDomain = AppDomain.CreateDomain("Friendly Name");
moduleDomain.ExecuteAssembly(path, new[] { "arg1", "arg2" });

由于Environment.GetCommandLineArgs()和StartupEventArgs都返回原始应用程序的命令行参数,而不是使用ExecuteAssembly(。

我想访问传递给WPF应用程序的参数,而不必手动定义Main方法,最好使用StartupEventArgs。有办法做到这一点吗?

在单独的进程中启动WPF应用程序是可行的,但会对性能造成影响,并使调试变得复杂。

访问单独应用程序域中WPF应用程序的命令行参数

Tigran的评论让我找到了一个我很满意的解决方案,使用AppDomain.SetData而不是使用命令行参数。基本轮廓如下:

AppDomain moduleDomain = AppDomain.CreateDomain("Friendly Name");
moduleDomain.SetData("arg1", "arg1Value");
moduleDomain.SetData("arg2", "arg2Value");
moduleDomain.ExecuteAssembly(path);

然后,访问WPF应用程序中的"参数":

string arg1Value = AppDomain.CurrentDomain.GetData("arg1");
string arg2Value = AppDomain.CurrentDomain.GetData("arg2");

这适用于我的用例。