C#一行代码实现之 跨线程设置控件值2

发布时间 2023-05-06 17:18:10作者: 懒树懒

代码调用

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();
}