Window.Show()在控制台应用程序中挂起

时间:2015-11-30 10:37:59

标签: c# wpf

对于控制台应用程序,当我执行window.Show()时,我的WPF窗口挂起。但是在App.xaml(Window Application)中运行时,没关系。

我使用AggregateCatalog来初始化我的对象,而不是使用下面的代码。

var application = new System.Windows.Application();
application.Run(new MyWindow());

对于AggregateCatalog:

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()在控制台应用程序中运行它,是否有限制?

1 个答案:

答案 0 :(得分:0)

使用控制台应用程序显示Windows窗体通常不是一个好主意。堆栈溢出有一个很好的问题,它给出了确切的区别 控制台和Windows应用程序之间以及可能遇到的问题 Difference between Windows and Console application

您可以通过在单独的线程中运行它来运行WPF应用程序,但它可能仍然以一种奇怪的方式运行,并且您作为程序员必须解决问题而不是VS为您执行此操作时创建一个适合目的的项目模板。 看看这个评论,了解我的意思: https://stackoverflow.com/a/574934/2794980

相关问题