c#多线程操作界面的时候,我用Invoke不卡界面,但是用BeginInvoke会卡是为什么
1个回答
展开全部
这个涉及到winform 窗体发送循环消息机制,下面给出详细解释的档铅仔链激孝接,有兴趣可以看看。
就这个问题来说,你可以这样理解:
Invoke要等待SetValue方法执行完成后再进入下一个循环。
BeginInvoke通知了要执行SetValue方法,但是不等待SetValue执行完就又进入循环了。
你可以在BeginInvoke后面加一个Thread.Sleep(50);这行汪样就不不卡了。
BeginInvoke卡界面与子线程不能访问主线程卡界面不一样,前者是忙晕了后者是在等待懒得更新界面。
链接地址:http://www.cnblogs.com/fuchongjundream/p/3939298.html
就这个问题来说,你可以这样理解:
Invoke要等待SetValue方法执行完成后再进入下一个循环。
BeginInvoke通知了要执行SetValue方法,但是不等待SetValue执行完就又进入循环了。
你可以在BeginInvoke后面加一个Thread.Sleep(50);这行汪样就不不卡了。
BeginInvoke卡界面与子线程不能访问主线程卡界面不一样,前者是忙晕了后者是在等待懒得更新界面。
链接地址:http://www.cnblogs.com/fuchongjundream/p/3939298.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询