天天看點

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 ="你好");