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