c# - 从控制台应用程序 exe 在 DLL 中启动 WPF 应用程序

标签 c# wpf visual-studio mvvm dll

目前我在同一个解决方案下有两个独立的 C# 项目,我们称它为 Window.exe 和 Console.exe。 Window.exe 是一个独立运行的 WPF MVVM 应用程序。

为了排除一个小问题,我的目标是将Window.exe转换为Window.dll,然后使用Console.exe加载Window.dll。我尝试调用 App.Run(),或移动 App_Startup 中的例程,该例程用于将主窗口启动到单独的方法上并调用它。运行 Window.dll 的新线程不能真正持续下去。当我在调试中进入它时,它能够填充 GUI,但我无法与之交互。

关于我应该如何进行的任何想法?

最佳答案

我能够通过做两件事来完成此任务:

  1. 您需要将控制台应用程序中的 Main 方法标记为 STAThread 方法,因为 UI 需要位于 STA 线程上。否则,在调用主窗口的构造函数时会出现异常。

  2. 确保在 Run() 之前也调用了 InitializeComponent()。如果您不这样做,应用程序将运行,但不会首先设置窗口。

我能够在一个解决方案中使用它,我也有一个 WPF 主应用程序和控制台应用程序来测试东西:

[STAThread]
static void Main(string[] args)
{
   WpfApp.App app = new WpfApp.App();
   app.InitializeComponent();
   app.Run();
}

关于c# - 从控制台应用程序 exe 在 DLL 中启动 WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35929270/

相关文章:

c# - 以编程方式寻址在 xaml 中创建的 Canvas

discrete_distribution 中的 C++ 编译错误

c# - 对于自动 C# 代码生成 : ApexSql Code or Entity Framework?

c# - WPF 中的 PrintDialog.PrinterSettings 等效项

wpf - 嵌入在 ContentControl 中的交互触发器

c++ - 最先进的 C++ 单元测试?

visual-studio - 将代码片段分配给 Visual Studio 中的键盘快捷键

c# - 如何更改我的 treeView 图标而不是 +,- 就像 c#.net win 窗体中的 Windows 资源管理器 TreeView

c# - MonoTouch 确定性处理单元

c# - 从 URL 到流的图像