在线程中显示窗口卡死
功能是:主窗体上有一个按钮,点击之后在桌面的右下角显示一个提示窗口。
现在点击按钮的时候,另起了一个线程处理提示窗口的显示,在显示提示窗口和消失提示窗口之间用了Thread.sleep()函数来控制显示时间。
在显示的过程中,提示窗体是卡死状态,也就是鼠标移到窗体上的时候是显示等待的状态。但是不把显示提示窗体的功能放在线程中就不会出现这种情况,求教大家了。
------解决方案--------------------有没有用到Control.Invoke,有没有在这个委托中包含能让线程挂起的代码。
------解决方案--------------------你是不是在线程中是不是这样操作的:
Form2 f = new Form2();
f.Show();
Thread.Sleep(5000);
这样的话,是会导致界面等待的,因为你让线程Sleep了,而且窗体的关闭是因为Thead执行完成,资源释放而关闭的,f.Show()执行完成后,窗体不会等待,而是直接执行Thread.Sleep,而如果是ShowDialog的话,那么线程就会挂起接受事件消息,只有关闭窗体以后,才会执行Thread.Sleep,这样就无法满足你定时关闭的功能了,必须手动关闭,所以,改变下思路吧,通过其他方式是实现或者Timer,当时间到了以后,手动关闭窗体
------解决方案--------------------
看你的代码,简化了以后跟上面那个差不多,也就是说,你在Show窗体以后,将线程Sleep了,导致你的界面无法响应
------解决方案--------------------------解决方案--------------------
你是不是在线程中是不是这样操作的:
Form2 f = new Form2();
f.Show();
Thread.Sleep(5000);
这样的话,是会导致界面等待的,因为你让线程Sleep了,而且窗体的关闭是因为Thead执行完成,资源释放而关闭的,f.Show()