读书人

WinForm程序中多线程与Timer的组合使用

发布时间: 2013-03-06 16:20:31 作者: rapoo

WinForm程序中多线程与Timer的结合使用
在一个用户界面中,要求用户提供一个Excel文件的地址,用户界面如下。WinForm程序中多线程与Timer的组合使用

WinForm程序中多线程与Timer的组合使用WinForm程序中多线程与Timer的组合使用

当选择好文件后,点击Next按钮后,系统会检查提供的Excel文件的可用性,会调用COM组件分析这个Excel的layout等,如果通过了就切换到另一个Form,如果没有的话就提示用户重新选择。如果这个过程时间很长的话,就会造成用户界面的假死现象,没有任何动静。所以,一般会在Form中用一个正在等待的GIF图片提示用户正在运行中。想要如下的效果。

WinForm程序中多线程与Timer的组合使用WinForm程序中多线程与Timer的组合使用

WinForm程序中多线程与Timer的组合使用

可是虽然加了这个图片,但是因为是在一个线程中,可能会先执行Button Click方法中的所有逻辑后才去渲染界面,所以此种情况下,依然看不到图片显示,看到的只是一个并不完全的WinForm假死在那里。

此时想到了多线程,使用另外的一个线程去执行检查Excel的可用性的操作。用一个变量来标记第二个线程是否完成,完成后在继续往下操作。

private mytimer_Tick(){   if(isThreadOver){if(isOK){//显示下一个界面,销毁当前界面}}}

这样的话,就能在程序检查Excel可用性的时候,不至于造成主线程中用户可视化界面的阻塞以致于给人程序卡死的感觉。

读书人网 >编程

热点推荐