2015-11-30 6 views
0

Для консольного приложения, когда я запускаю window.Show(), мое окно WPF зависает. Но при запуске приложения App.xaml (приложение Window) все в порядке.Window.Show() висит в консольном приложении

Я использую 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()?

+0

Вызов 'Show()' блокирует поток. Используйте многопоточность. См. [This] (http://stackoverflow.com/a/33239090/4546874). Это WinForms, но все еще актуально. –

+0

Вы говорите о проекте консоли (= без интерфейса) или о проекте WPF (= в основном интерфейс)? – varocarbas

+0

Проект WPF, запускаемый в консольном приложении. –

ответ

0

Использование консольного приложения для отображения формы окна, как правило, не очень хорошая идея. Существует хороший вопрос на переполнение стека, который дает точную разницу между консольной и окна приложения и какие проблемы вы можете запустить в Difference between Windows and Console application

Вы можете быть в состоянии запустить приложение WPF, запустив его в отдельном потоке, но он может по-прежнему вести себя странно, и вам, как программисту, придется решать проблемы, а не делать VS для вас, когда вы создаете шаблон проекта, который подходит для цели. Взгляните на этот комментарий, чтобы понять, что я имею в виду: https://stackoverflow.com/a/574934/2794980

Смежные вопросы