通常,会有这样的需求与问题:运行了一个窗体,触发某个事件后需要做一些处理,而这个处理可能比较耗时间或者耗资源,如果直接在消息响应中处理,运行起来界面会假死。这个时候,我们想到了多线程,新建一个子线程来处理这个过程,然后将处理的结果告诉界面线程,并在界面上体现出来给用户看。这样就出现了一个问题,子线程显示结果给用户时,需要操纵界面线程管理的控件,而当子线程没有释放这个控制时,控件也会出现假死,因为界面线程不能及时绘制控件了。
处理方法:使用委托,将子线程操作控件的部分委托给界面线程去做。
例子
通常的实现如下:
修正: