C#一行代码实现(05)跨线程设置控件值,免去InvokeRequired通用方法2

主要功能

  • 实现后台线程访问并设置窗口控件值,线程安全,在后台线程直接调用方法,不需要判断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();
}

声明

posted @ 2020-10-24 19:14  易几施  阅读(172)  评论(0)    收藏  举报