C#程序窗口假死

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#程序窗口假死相关的知识,希望对你有一定的参考价值。

主要是因为UI线程被长时间的操作阻塞了。BackgroundWorker算是一种方法。如果不需要太多操作的话,还有一种更简单的方法。就是如果你在UI刷新过程中采用了长时间运算的for循环之类导致阻塞,可以试试在for中每次循环结束时,加一句Application.DoEvent()
。大致应该是这句,记不清了,自己查下。效果可能不如BackgroundWorker好,但是也能凑乎用。
最后只说一句,Vs2005的C#

Delphi太像了,应该是设计Delphi的人开发的,不过Vs2008开始已经超越Delphi了,现在的Delphi已是昔日黄花,太不给力了。
参考技术A 每次只能执行一个,且步骤之间存在依赖性关系的话,那就不用多个线程,只用一个就可以了。
建议楼主用BackgroundWorker,多个步骤放在一个线程里面就行了。
多个线程还不是一个一个执行的吗?为啥要那么多线程呢,只要一个来保证窗口不假死就行了。
参考技术B 用个Timer撒,把执行的代码放在Timer的Tick方法里面,然后窗体上的某方法只执行timer1.Start();
就行了.Tick方法第一句写timer1.Stop();下面再放你的代码.
你在窗体上直接Sleep()不是卡UI了么.
参考技术C 如果是用控制台的话,是不会有问题的;
如果是用窗体的话,就要用线程。
增加一个引用
using
System.Threading;
然后弄一个线程出来
Thread
asd
=
new
Thread(abc)
asd.Start();
abc()

for(int
i
=
0;i==i;i++)
{}

以上是关于C#程序窗口假死的主要内容,如果未能解决你的问题,请参考以下文章

C# 窗口无假死,进度条

我用C# winform多线程,窗口就假死,等到线程全部完成了才可以点击。请问要怎么才可以让窗口不假死。

c#窗体假死

C#异步调用,界面假死

实现winfrom进度条及进度信息提示,winfrom程序假死处理

C# 委托 线程 窗体假死