Размещение нескольких экземпляров приложения в задаче tabcontrol/ queuing
Итак, у меня есть это приложение с основной формой, на которой есть несколько кнопок. а кнопки будут выполнять трудоемкие задачи, включая работу с пользовательским интерфейсом MainForm.
Я решил создать MainFormHost, где это форма с элементом управления tab, который под каждой вкладкой я создаю экземпляр моей MainForm и размещаю его там. И пока все было в порядке. Проблема в том, что когда я нажимаю на кнопку на MAinForm1, она начинает работать нормально, но как только я нажимаю на кнопку на MainForm2, процесс кнопки MainForm1 встает в очередь за процессом MainForm2.
Что я уже пробовал:
Вот как я создаю свои формы
MainForm GetMainFrom(TabPage tabPage) { tabPage.Invoke(new Action(() => { mainForm = new MainForm(); mainForm.TopLevel = false; mainForm.FormBorderStyle = FormBorderStyle.None; mainForm.Dock = DockStyle.Fill; _mainForms.Add(mainForm); tabPage.Controls.Add(mainForm); mainForm.Show(); })); }
А затем вызовите метод:
var mainFormThread = new Thread(() => { mainForm = GetMainFrom(tabPage); }); mainFormThread.SetApartmentState(ApartmentState.STA); mainFormThread.Start();
Если это может быть чем-то полезным, я в порядке с написанием хост-приложения в WPF.