C# InvokeRequired线程安全
为了保证新家的线程可能要对主界面的控件元素的属性发生一些改变,此时防止此操作对于主线程的影响,就提出了 InvokeRequired方法,保证主线程的安全,同时新加的线程也可以改变主页面中元素的值。
定义一个方法来使用:
public static void InvokeIfRequired<T>(this T control, Action<T> action) where T : ISynchronizeInvoke
{
if (control.InvokeRequired)
{
control.BeginInvoke(new Action(() => action(control)), null);
}
else
{
action(control);
}
}
使用方法:
this.TextBox1.InvokeIfRequired(rsb =>
{
rsb.Text = str1;
});
其中的TextBox1就是我们所使用的其中一个控件,通过新增的线程对他操作;
如果有更好的办法,欢迎同道中人可以相互交流