Member 12631868 Ответов: 0

Размещение нескольких экземпляров приложения в задаче 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.

0 Ответов