日期:2014-05-18  浏览次数:21014 次

使用BackgroundWorker之后程序为什么出现假死现象
我用了BackgroundWorker写了一个桌面应用程序,执行异步操作后,在DoWork事件中检测某一指定的文件夹中的图片,然后将这些图片自动经过PhotoShop处理,处理可以成功的,处理信息将在界面上的RichTextBox中显示。我执行异步的之前,也写了Control.CheckForIllegalCrossThreadCalls = false;这句话。并且RichTextBox中的数据也及时进行里清除。程序运行过程中一切都很顺利,但是程序运行一个小时(有时候时间长,有时候时间短)左右总是会卡在那里,出现假死现象,我在Dowork事件中加了Try,Catch语句,就是抓不到错误。求高手帮忙解决。

------解决方案--------------------
应该是主进程中的代码引起的吧,dowork后应该访问了主进程,进行了相关的操作,建议不要取消 CheckForIllegalCrossThreadCalls ,应使用委托去访问主进程控件