C# winform程序,UI界面锁死。如何处理?
程序“未响应”。有时候是程序未响应,有时候是什么都动不了(死机)。Timer中的方法是在主线程执行的,如果执行时间长,会锁UI界面,表现为鼠标不可控,任务管理器程序显示“...
程序“未响应”。有时候是程序未响应,有时候是什么都动不了(死机)。
Timer中的方法是在主线程执行的,如果执行时间长,会锁UI界面,表现为鼠标不可控,任务管理器程序显示“未响应”。
处理方法:1.优化Timer控件中Tick事件中的方法,减少方法执行时间
2.加大Timer的Interval,如果要求不高,1000毫秒以上就好。这个Interval最好不要低于200
3.多线程处理,将消耗大的业务放在子线程中,这样UI不会锁死。请问还有别的方法处理吗?
请问在Tick事件中开始加入时钟禁止,当事件代码执行完再使能时钟,可否? 展开
Timer中的方法是在主线程执行的,如果执行时间长,会锁UI界面,表现为鼠标不可控,任务管理器程序显示“未响应”。
处理方法:1.优化Timer控件中Tick事件中的方法,减少方法执行时间
2.加大Timer的Interval,如果要求不高,1000毫秒以上就好。这个Interval最好不要低于200
3.多线程处理,将消耗大的业务放在子线程中,这样UI不会锁死。请问还有别的方法处理吗?
请问在Tick事件中开始加入时钟禁止,当事件代码执行完再使能时钟,可否? 展开
展开全部
1和2按你的情况都是没用的,如果你所说的那个执行是个循环的话,可以在循环中加一行Application.DoEvents() 这个可以让UI不卡死,但加入这个会极大的降低你的循环执行效率。所以一般情况下还是要用多线程的。
追问
加Application.DoEvents(),几分钟后就卡死了。
不加反而可以使用几个小时。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要用定时器 开个线程 后天处理数据 然后UI填充 等动作。
你以上设置 定时器 1秒执行一次 无限在触发。。
你以上设置 定时器 1秒执行一次 无限在触发。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般情况都是放在子线程中运行。这样既保证效率,方便管理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有没有没有没有
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询