请教C# WinForm编程高手,如何解决多界面耗时操作界面僵死的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教C# WinForm编程高手,如何解决多界面耗时操作界面僵死的问题相关的知识,希望对你有一定的参考价值。
我使用了多个TabPage,每个TabPage都有加入的自定义UserControl组件,在主窗口中使用TabControl时,每个TabPage都是很耗时的操作(例如查询数据库,blublublu),有的长达一分钟多,这样整个界面就僵死了,即使我在UserControl中加入了BackGoundWorker,把耗时的非界面操作放在了DoWork里面也不能解决。
我不太清楚这到底是什么原因,是不是要使用多线程来添加TabPage呢
worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
需要两个方法,就是:
private void worker_DoWork(object sender, DoWorkEventArgs e)
用于处理需要做的工作,这个是在另一个线程中完成的
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
这个用于处理完成后,在界面中响应的操作。
界面卡死,就只能断点检查耗时在什么地方啦。 参考技术A 最好用多线程 参考技术B Application.DoEvents可以解决这个问题
以上是关于请教C# WinForm编程高手,如何解决多界面耗时操作界面僵死的问题的主要内容,如果未能解决你的问题,请参考以下文章
c# winform 为啥 我用treeview做得导航界面,顺序不对,望高手支招。
C#,winform程序中datagridview控件使用多层表头,由于表头项太多,拖动滚动条的时候一直闪,请教高手