有的时候我们会使用多线程的情况,但是我们又需要在工作线程的线程中修改UI控件。这个时候就可能会出现winform假死的状态。

自己首先使用了this.invoke,它可以实现在其他线程中修改主线程中控件的属性;但是效果是进度条确实会变化但是winform会处于假死状态,直至其他线程不再修改主线程中控件的属性才会结束。

之后找了网上不少的说法加上 这一句就可以了  Application.DoEvent(); 


这里做的事情是多久刷新一次当前进度条的情况

Winform处于假死状态_进度条



不过需要注意的是Application.DoEvent()这个方法的作用是  将你的应用中尚未触发的windows消息打乱次序、提前触发

这个做法是线程不安全的,请谨慎使用

大佬们如果有更好的方法也请多指点