Если вы используете C # 3.5, очень просто использовать методы расширения и лямбды, чтобы предотвратить обновление пользовательского интерфейса из других потоков.
public static class FormExtensions
{
public static void InvokeEx<T>(this T @this, Action<T> action) where T : Form
{
if (@this.InvokeRequired)
{
@this.Invoke(action, @this);
}
else
{
action(@this);
}
}
}
Так что теперь вы можете использовать InvokeEx
в любой форме и иметь доступ к любым свойствам / полям, которые не являются частью Form
.
this.InvokeEx(f => f.label1.Text = "Hello");