Для консольного приложения, когда я запускаю 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()?
Вызов 'Show()' блокирует поток. Используйте многопоточность. См. [This] (http://stackoverflow.com/a/33239090/4546874). Это WinForms, но все еще актуально. –
Вы говорите о проекте консоли (= без интерфейса) или о проекте WPF (= в основном интерфейс)? – varocarbas
Проект WPF, запускаемый в консольном приложении. –