gpt4 book ai didi

c# - 如何异步使用 DataAdapter.Fill()?

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:17 25 4
gpt4 key购买 nike

我有一个 DataAdapter,它在 DataSet 中填充 5 个 DataTable。

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.Fillda2.Fill 会同时调用不同的线程。由于代码执行的线程与 UI 线程不同,要设置 DataGridViewDataSource,您应该使用 Invoke

关于c# - 如何异步使用 DataAdapter.Fill()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com