Action<T> 泛型委托 在跨线程访问控件委托中的应用
C#在跨线程操作控件时, 一般如下操作:
在非主线程中调用:
UpdateInfo(info);
delegate void updateInfoDelegate(string info);
private void UpdateInfo(string info)
{
if (this.InvokeRequired)
{
updateInfoDelegate d= new updateInfoDelegate(UpdateInfo);
this.Invoke(d, new object[]{info});
}
else
{
this.label1.Text = info;
}
}
但现在有了 Action<T> 泛型委托, 则就不需要自己申明一个委托了, 只需要将上述蓝色文字部分修改为如下即可:
this.Invoke(new Action<String>(), info);
若有多个参数也可以的, 还有 Action<T1, T2>, Action<T1, T2, T3>,Action<T1, T2, T3, T4> ;
若有更多的参数则就将参数封装到一个对象里吧;
若需要返回值, 则用 泛型 Func<T, TResult> 委托即可.
~做事情贵在坚持~
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步