我有 mysql 循环
using (var conn = new MySqlConnection(connectionString))
{
try
{
conn.Open();
int count = 1;
foreach (var value in values)
{
MySqlCommand cmd;
string qu = "INSERT INTO db(val1,val2,val3,val4,val5) VALUES("+value+")";
cmd = new MySqlCommand(qu, conn);
cmd.ExecuteNonQuery();
textBox1.Text = count.ToString();
count++;
}
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.ToString());
}
}
我的目标是在 textBox1 计数器中显示(循环有 18k+ 行),但是当我开始 foreach 循环时,我的窗口被冻结并且在循环结束之前不显示任何内容,然后在文本框中显示数字,但我想在中显示当前计数实时。
在 .NET 中,您有几个选项,我将在下面简要列出:
直接使用
Thread
类及其 API 创建和管理线程,这是“老式”方式
使用 async/await 启用异步代码(你的库需要支持异步操作)
如果你的库不支持异步操作,你总是可以尝试用
Task.Run
包装它
你可以在互联网上找到关于每个主题的数十种资源,所以我不打算深入细节。
在你的情况下,我想应该有方法ExecuteNonQueryAsync
关于用户界面——当我们有用户等待的操作时,向用户显示某种进度指示总是一个好主意。
您需要一个线程来执行此操作。