Итак, у меня есть это приложение с MainForm, на котором есть несколько кнопок. и кнопки будут занимать много времени, включая работу с интерфейсом MainForm. Поскольку несколько раз нам нужно запускать несколько экземпляров этого приложения в одно время, я решил создать MainFormHost, где это форма с элементом управления вкладкой, который под каждой вкладкой создавал экземпляр моего MainForm и размещал его там. И пока все в порядке. Проблема в том, что когда я нажимаю кнопку на MAINForm1, она начинает работать нормально, но как только я нажимаю кнопку на MainForm2, процесс MainForm1 запускается в очередь за процессом MainForm2.Хостинг нескольких экземпляров приложения в tabcontrol/queueing
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();
Я не могу изменить код внутри MainForm для Призовите вещи, когда они хотят работать с UI, потому что это будет слишком много работы, но Я могу легко сделать каждый щелчок кнопки для вызова из потока/задачи или ...
ТИА
Благодарим Вас за тщательное объяснение.Однако я как-то знал большинство из того, что вы объяснили, но мой вопрос состоял в том, что есть способ/ярлык для меня, чтобы не вносить такие изменения в мой код. например, искать что-то вроде создания нескольких потоков пользовательского интерфейса или как это работает, когда я запускаю два экземпляра моего приложения, и они отлично работают, не блокируя друг друга. Я не хочу иметь много открытых окон и предпочитаю, чтобы экземпляры управлялись под управлением табуляции. – Alireza
Помимо нескольких процессов (в основном, несколько копий вашего приложения), то нет, нет. Извините. Самый простой способ «исправить это» - это использовать «Рамку задач». – adudley