请教C# WinForm编程高手,如何解决多界面耗时操作界面僵死的问题
我使用了多个TabPage,每个TabPage都有加入的自定义UserControl组件,在主窗口中使用TabControl时,每个TabPage都是很耗时的操作(例如查...
我使用了多个TabPage,每个TabPage都有加入的自定义UserControl组件,在主窗口中使用TabControl时,每个TabPage都是很耗时的操作(例如查询数据库,blublublu),有的长达一分钟多,这样整个界面就僵死了,即使我在UserControl中加入了BackGoundWorker,把耗时的非界面操作放在了DoWork里面也不能解决。
我不太清楚这到底是什么原因,是不是要使用多线程来添加TabPage呢 展开
我不太清楚这到底是什么原因,是不是要使用多线程来添加TabPage呢 展开
3个回答
展开全部
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)
这个用于处理完成后,在界面中响应的操作。
界面卡死,就只能断点检查耗时在什么地方啦。
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)
这个用于处理完成后,在界面中响应的操作。
界面卡死,就只能断点检查耗时在什么地方啦。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询