Я предполагаю, что у вас много кода, который взаимодействует с пользовательским интерфейсом, и вы хотите сделать это из фонового потока.
Вы можете добавить метод, подобный этому:
private static void UpdateControl(Control control, Action action)
{
if (control.InvokeRequired)
control.Invoke(action);
else
action();
}
Использование:
Старый
textBox.Text = "Something";
New
UpdateControl(textbox, () => { textBox.Text = "Something" });
Или метод расширения, чтобы сократить использование
public static class ControlExtension
{
public static void UpdateControl(this Control control, Action<Control> action)
{
if (control.InvokeRequired)
control.Invoke((Action)(() => action(control)));
else
action(control);
}
}
Использование:
textBox.UpdateControl(arg => arg.Text = "Something");