Я делал бэкграунд воркера, и интернет лопатил. Проблема в том, что нужно ещё изредка выдавать диалоговые окна из этого потока. Для этого их необходимо вызывать от имени основного потока GUI => снова та же проблема.
| Код | namespace NameSpace { public partial class Form1 : Form {
void Выполнить_Мега_Адскую_И_Долгую_Работу() { ................................. if (FolderDialog.ShowDialog() == DialogResult.OK) { ........................ } private void Button1_Click(object sender, EventArgs e) { Выполнить_Мега_Адскую_И_Долгую_Работу(); } } }
|
если делать воркера, то он стопориться в месте вызова диалога, если начинать делать инвоки типа
| Код | void Выполнить() { if (this.InvokeRequired) { Invoke(new MethodInvoker(delegate() { Выполнить(); })); } else { .................... } }
|
всё опять виснет |