Invoke( //调用窗体线程
(MethodInvoker)(() =>//使用Lambda表达式
{
tssLabel_Time.Text =//显示程序启动时间
string.Format(
"系统已经运行: {0}天{1}小时{2}分{3}秒",
P_TimeSpan.Days, P_TimeSpan.Hours,
P_TimeSpan.Minutes, P_TimeSpan.Seconds);
});
在msdn查了 可是一点不懂 invoke ,methodinvoker 这两句话什么意思
首先 Invoke 这个方法 是楼主代码所在窗体基类的一个方法
函数签名:
void Invoke(MethodInvoker method);
他的功能是让 调用Invoke方法的线程可以操作 窗体线程创建的对象
MethodInvoker 是一个委托类型
(MethodInvoker)( () => {...}) 这句是说把 lambda表达式 强制转换成MethodInvoker类型。
通过反射,反射出具体方法的实例,你这里的使用相当于定义了一个匿名方法.也就是你的线程调用的方法
Windows的UI的控件更新需要在线程安全下进行,Invoke就是用来保证了这个