Я эту ситуацию:C# Threading и модернизация GUI
Форма «Меню», где вы можете нажать кнопку «Создать» и форму вставки (с ShowDialog) появится. Если вы вставляете данные, я делаю запрос INSERT в базе данных, и я закрываю эту форму. После оператора showDialog() у меня есть много методов, которые выполняют много операций последовательным образом (MUCH WAV) и иногда обновляют dataGridView. После всего этого вычисления я имитирую нажатие «новой кнопки», чтобы пользователь мог вставить новый элемент. Это пример:
private void buttonNew_Click(object sender, EventArgs e)
{
DialogResult dr = new DialogResult();
InsertForm form = new InsertForm();
dr = form.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK)
{
Method1();
Method2();
if (dataGrid2.RowCount > 0)
{
Method3();
Method4();
Method5();
Method6();
Method7();
Method8();
}
bNew.PerformClick();
}
}
Проблема заключается в том, что «Новая» форма (bNew.PerfomClick()) появляются через 2-3 секунды, и я не могу ждать столько времени. Поэтому я попытался создать метод, который включает Method1 в Method8, запустить его в новом потоке и выполнить bNew.PerfomClick(), но это не работает, потому что многие мои методы обновляют datagridView.
Есть ли способ решить эту проблему? Извините за мой плохой английский.
------------ UPDATE ------------------
Теперь я пытаюсь этот код:
delegate string OperazioniDelegate();
private string Operazioni()
{
if (!InvokeRequired)
{
Method1();
Method2();
............
}
else
Invoke(new OperazioniDelegate(Operazioni));
return "";
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Operazioni();
}
Таким образом, новая форма вставки предъявляются мгновенно, но его интерфейс блокируется до работы BackgroundWorker End ..
Возможный дубликат: http://stackoverflow.com/questions/661561/how-to-update-the-gui-from-another-thread-in-c?rq= 1 – Onots
Привет, проблема в том, что мне нужно не только обновлять пользовательский интерфейс, но мне также нужно выполнить много операций в другом потоке и обновить NEXT ui .. – helloimyourmind