首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

InvokeHelper:多线程批改主界面控件属性并调用其中方法

2012-09-05 
InvokeHelper:多线程修改主界面控件属性并调用其中方法? 野比 2012源代码:点击下载下面是动画,演示在多线

InvokeHelper:多线程修改主界面控件属性并调用其中方法

? 野比 2012

源代码:点击下载

下面是动画,演示在多线程(无限循环+Thread.Sleep)情况下主界面操作不受影响。

InvokeHelper:多线程批改主界面控件属性并调用其中方法


多线程是一种提高程序运行效率和性能的常用技术。随着我们学习工作的深入,在编程中或多或少会涉及到需要多线程的情况。多数时候,我们的操作模式是后台线程中处理数据,计算结果,然后在前台界面(GUI)中更新显示。

在.NET Framework中,为了保证线程安全,避免出现访问竞争等问题,是不允许跨线程访问窗体控件的。如果强行访问,则会引发InvalidOperationException无效操作异常,如下图:

InvokeHelper:多线程批改主界面控件属性并调用其中方法

为了实现跨线程访问控件,.NET Framework为每个控件提供了InvokeRequired属性和Invoke方法。使用这些技巧,就可以实现我们在其他线程中直接修改界面的需要。看起来似乎很简单,但实际每次调用都有不少代码需要编写,还需要自行处理各种异常。下面是典型的调用例子:



参考文献

[1] Sergiu Josan, Making Controls Thread-safely, May 2009

[2] vicoB, Extension of safeInvoke, July 2010

? 野比 2012

热点排行