Window.Show()在控制台应用程序中挂起
本文关键字:应用程序 挂起 控制台 Show Window | 更新日期: 2023-09-27 18:25:12
对于控制台应用程序,当我执行窗口时。Show(),我的WPF窗口被挂起。但是当在App.xaml(窗口应用程序)中运行时,它是可以的
我使用AggregateCatalog来初始化我的对象,而不是使用下面的代码。
var application = new System.Windows.Application();
application.Run(new MyWindow());
对于聚合目录:
private static AggregateCatalog catalog;
private static CompositionContainer container;
private static IEnumerable<IModuleController> moduleControllers;
private static void RunApplication()
{
catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(ViewModel).Assembly));
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
container = new CompositionContainer(catalog, CompositionOptions.DisableSilentRejection);
CompositionBatch batch = new CompositionBatch();
batch.AddExportedValue(container);
container.Compose(batch);
moduleControllers = container.GetExportedValues<IModuleController>();
foreach (IModuleController moduleController in moduleControllers) { moduleController.Initialize(); }
foreach (IModuleController moduleController in moduleControllers) { moduleController.Run(); }
}
如果我在控制台应用程序中使用相同的RunApplication()运行它,会有限制吗?
使用控制台应用程序显示windows窗体通常不是一个好主意。关于堆栈溢出有一个很好的问题,它给出了确切的区别在控制台和windows应用程序之间,以及可能遇到的问题Windows和控制台应用程序之间的差异
你可以通过在一个单独的线程中运行WPF应用程序来运行它,但它的行为可能仍然很奇怪,当你创建一个适合目的的项目模板时,作为程序员,你将不得不解决问题,而不是VS为你做这件事。请看一下这条评论,了解我的意思:https://stackoverflow.com/a/574934/2794980