【发布时间】:2018-09-29 02:13:05
【问题描述】:
我正在尝试在我的程序中实现异步方法,并且我想从数据表中异步读取每一行。 我有以下情况:
private void VerifyPermissions()
{
try
{
string constring = String.Format("server={0}; user id={1}; password={2}; database={3}; pooling=false", AcessoBancoDados.server, AcessoBancoDados.user, AcessoBancoDados.password, AcessoBancoDados.database);
MySqlConnection con = new MySqlConnection();
con.ConnectionString = constring;
con.Open();
var query = "SELECT id FROM users";
MySqlCommand cmd = new MySqlCommand(query, con);
MySqlDataAdapter da = new MySqlDataAdapter(query, con);
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
foreach (DataRow item in dt.Rows)
{
Messagebox.Show(item["id"].ToString());
}
}
以及调用方法:
private void button1_Click(object sender, EventArgs e)
{
VerifyPermissions()
}
任何人都可以向我展示一个异步情况吗?谢谢。
【问题讨论】:
-
为什么要做异步?
-
在 foreach 部分中,我必须将控件添加到 flowlayout。如果 select 语句很大,它会冻结 ui 一段时间。我想绕过那个冻结...
-
所有控件都应该添加到 UI 线程中,异步添加到 UI 中没有意义。如果您的问题是由于打开连接和加载数据而导致 UI 冻结,您可以load data into data table asynchronously。
标签: c# winforms asynchronous foreach