【发布时间】:2012-12-10 15:32:42
【问题描述】:
我知道我在这里有一个巨大的 derp 时刻,这实际上可能很容易做到 - 我已经搜索并阅读了一些文章,但我仍然有点挣扎,所以任何反馈或指针有用的资源将不胜感激!
无论如何,我有一个名为PopulateDatagridViews 的类,其中包含各种函数,其中一个名为ExecuteSqlStatement,这个函数很简单,它初始化一个SQL 连接并返回一个DataTable,其中填充了以下结果SQL 查询。在同一个类中,我还有各种使用字符串构建器来构建 SQL 语句的函数。 (不理想,我知道。)
我在我的 GUI 线程中创建了一个 PopulateDatagridViews 对象,并使用它来设置各种数据网格视图以及返回的 DataTables。例如:
dataGridViewVar.DataSource = populateDgv.GetCustomers();
我遇到的一个问题自然是从数据库中读取的数据越多,UI 无响应的时间就越长。我想将通过PopulateDatagridViews 检索数据的过程转移到单独的线程或BackgroundWorker,以防止主GUI线程在处理时锁定。
我意识到我可以创建一个BackgroundWorker 来执行此操作,并在DoWork 处理程序中调用我的PopulateDatagridViews 中的适当函数。
我想我可以为PopulateDatagridViews 类中的每个单独函数创建一个BackgroundWorker,但肯定有更有效的方法来做到这一点吗?我非常感谢在正确的方向上指出这一点,因为它正在驱使我绕过弯道!
附加信息:我使用 .Net 框架的 4.0 版。
【问题讨论】:
-
您使用的是哪个 .Net 版本?
-
我使用的是 .Net 4.0 版
标签: c# sql multithreading user-interface backgroundworker