天天看点

C#WinForm跨线程访问控件泛型方法

WinForm跨线程访问控件泛型方法

/// <summary>
        /// 跨线程访问控件泛型方法
        /// </summary>
        /// <typeparam name="t"></typeparam>
        /// <param name="cont"></param>
        /// <param name="action"></param>
        public static void InvokeControlAction<t>(t cont, Action<t> action) where t : Control
        {
            if (cont.InvokeRequired)
            {
                cont.Invoke(new Action<t, Action<t>>(InvokeControlAction), new object[] { cont, action });
            }
            else
            { action(cont); }
        }
           

调用:

InvokeControlAction<ProgressBar>(proBar, t => { t.Minimum = 0; t.Maximum = pointList.Count; t.Value = 0; });
InvokeControlAction<ProgressBar>(proBar, t => t.Value++);
InvokeControlAction<Label>(label, t => t.Text ="你好");