请教C# WinForm编程高手,如何解决多界面耗时操作界面僵死的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教C# WinForm编程高手,如何解决多界面耗时操作界面僵死的问题相关的知识,希望对你有一定的参考价值。

我使用了多个TabPage,每个TabPage都有加入的自定义UserControl组件,在主窗口中使用TabControl时,每个TabPage都是很耗时的操作(例如查询数据库,blublublu),有的长达一分钟多,这样整个界面就僵死了,即使我在UserControl中加入了BackGoundWorker,把耗时的非界面操作放在了DoWork里面也不能解决。
我不太清楚这到底是什么原因,是不是要使用多线程来添加TabPage呢

BackGoundWorker 就是多线程,一般可以解决呀。

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 如何动态添加控件和设计控件布局

C#,winform程序中datagridview控件使用多层表头,由于表头项太多,拖动滚动条的时候一直闪,请教高手

请教c# winform,权限设计问题

愿给50分 请教高手 java 如何实现不同用户登陆后看见的界面不同

C# winform 中如何实现visual studio 中软件编辑界面的工具箱的隐藏出现效果?? 恳请高手回答