首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么解决开线程界面卡的有关问题

2012-09-07 
如何解决开线程界面卡的问题。开过一个帖子,代码写太多没人看,这次我简单写一下:C# codebool isAThreadEnd

如何解决开线程界面卡的问题。
开过一个帖子,代码写太多没人看,这次我简单写一下:

C# code
bool isAThreadEnd = false;//A线程未开启bool isBThreadEnd = false;//B线程未开启//主线程判断protected void CtrlThread(){    while(true)    {         if (isAThreadEnd == false)         {              this.startAThread();         }         if (isBThreadEnd == false)         {              this.startBThread();         }         Thread.Sleep(5000);    }}startAThread()和startBThread()两个线程分别读取数据库表然后将结果插入另一张表。操作结束后调用:Abort()杀死线程,并给isAThreadEnd 和isBThreadEnd 赋值false,以便下次循环。这两个线程均使用委托this.Invoke(),应为以后可能需要刷新控件。但目前刷新控件的代码还没写,每隔五秒界面会卡一下,这是为什么?以前protected void CtrlThread()用timer也是同样的问题。


[解决办法]
sleep(5000)这里睡 了5秒在开启一个先执行啊..意思就是不管这个线程完没有玩都要等待5秒.这5秒完了就开启下一个线程...没有完成就继续改线程... 
我觉得吧..你应该在startBThread()中设置一个A.wait()..这样才能保证顺利插入数据吧
[解决办法]
首先你这个程序会一直不停的执行线程...但是你执行线程拖动窗体的时候..就会开启新的线程..我觉得这个应该是你无论sleep(time),就会time的时候卡下的原因吧..
把拖动窗体的线程 摸个设置为后台线程试试....
[解决办法]
或者你可以去掉sleep()不过需要对自己的线程进行锁定
[解决办法]
你最好把你整个的代码发来看看... CtrlThread();startAThread();startBThread();

热点排行