主要功能
- 实现后台线程访问并设置窗口控件值,线程安全,在后台线程直接调用方法,不需要判断InvokeRequired
一行代码
ThreadPool.QueueUserWorkItem(o =>
{
for (int i = 0; i < 100; i++)
{
this.ExInvokeUi(() => textBox.Text = i.ToString());
}
});
//或
Task.Run(() =>
{
for (int i = 0; i < 100; i++)
{
this.ExInvokeUi(() => textBox.Text = i.ToString());
}
});
代码封装
/// <summary>
/// 跨线程访问控件,调用示例:this.ExInvokeUi(()=>txtName.Text="Jack");
/// </summary>
/// <param name="control"></param>
/// <param name="action"></param>
public static void ExInvokeUi(this Control control, Action action)
{
if (control.InvokeRequired)
control.Invoke(action);
else
action.Invoke();
}
声明