1. 在.net framwork 2.0中,可以通过以下代码来实现:
1 2 3 4 5 6 7 8 9 10 11 12 |
private delegate void SetControlPropertyThreadSafeDelegate(Control control, string propertyName, object propertyValue);
|
调用方式如下:
1 2 3 |
// thread-safe equivalent of
|
2.在.net 3.0或者更新的版本中,你可以重写上面的方法作为一个Control类的扩展方法,可以简化调用方式,具体代码如下:
1 |
myLabel.SetPropertyThreadSafe( "Text" , status); |
在.net 3.0以上的版本完整的调用步骤如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
private delegate void SetPropertyThreadSafeDelegate<TResult>(Control @ this , Expression<Func<TResult>> property, TResult value);
|
通过使用LINQ和lambda表达式使代码更加简洁:
1 |
myLabel.SetPropertyThreadSafe(() => myLabel.Text, status); // status has to be a string or this will fail to compile |
3.最简单的匿名方法调用:
1 2 3 4 5 6 |
///...blah blah updating files
|
以上方法搜集自网络,仅供参考。
转载请注明:文章转载自:[169IT-最新最全的IT资讯]
本文标题:c#多线程更新窗口(winform)GUI的数据
c#多线程更新窗口(winform)GUI的数据