我有一个 DataAdapter,正在填充数据集中的 5 个数据表。
SqlDataAdapter da = new SqlDataAdapter("Select * from testTable",con);
da.Fill(ds, 0, numberOfRowsToPutInEachDataTable, "DT1");
da.Fill(ds, numberOfRowsToPutInEachDataTable , numberOfRowsToPutInEachDataTable , "DT2");
da.Fill(ds, numberOfRowsToPutInEachDataTable* 2, numberOfRowsToPutInEachDataTable, "DT3");
da.Fill(ds, numberOfRowsToPutInEachDataTable * 3, numberOfRowsToPutInEachDataTable, "DT4");
da.Fill(ds, numberOfRowsToPutInEachDataTable * 4, numberOfRowsToPutInEachDataTable, "DT5");
我的目标是获得每一个
da.Fill...
同时异步运行。
我没有异步运行事物的经验,并且很难通过研究找到解决方案。谁能告诉我如何让每个 DataAdapter.Fill() 异步运行?
您可以使用多个线程Task.Run()
这边走:
Task.Run(() =>
{
da1.Fill(ds.Table1);
this.Invoke(new Action(() => {dataGridView1.DataSource = ds.Table1;}));
});
Task.Run(() =>
{
da2.Fill(ds.Table2);
this.Invoke(new Action(() => {dataGridView2.DataSource = ds.Table2;}));
});
这样,数据将同时使用 2 个不同的线程加载,而不会冻结表单。
在上面的代码中,da1.Fill
and da2.Fill
会同时调用不同的线程。由于代码执行的线程与 UI 线程不同,因此要设置DataSource
of DataGridView
你应该使用Invoke
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)