这个是我写的代码,可是执行程序会卡死private void button4_Click(object sender, EventArgs e)
{
Random rnd = new Random();
try
{
using (SqlConnection conn = DBOper.CaertConn("UserDB"))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
for (int i = 1; i <= 100000; i++)
{
cmd.CommandText = string.Format("update dbo.AccountsInfo set FaceID = {0} where UserID ={1}", rnd.Next(1, 29), i);
cmd.ExecuteNonQuery();
}
conn.Close();
}
MessageBox.Show("更新完成!");
}
catch (Exception)
{
MessageBox.Show("更新失败!");
}
}
麻烦大家教教我 怎么用多线程解决啊?麻烦给出实际代码,我对多线程完全不了解,谢谢
{
Random rnd = new Random();
try
{
using (SqlConnection conn = DBOper.CaertConn("UserDB"))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
for (int i = 1; i <= 100000; i++)
{
cmd.CommandText = string.Format("update dbo.AccountsInfo set FaceID = {0} where UserID ={1}", rnd.Next(1, 29), i);
cmd.ExecuteNonQuery();
}
conn.Close();
}
MessageBox.Show("更新完成!");
}
catch (Exception)
{
MessageBox.Show("更新失败!");
}
}
麻烦大家教教我 怎么用多线程解决啊?麻烦给出实际代码,我对多线程完全不了解,谢谢
{
cmd.CommandText = string.Format("update dbo.AccountsInfo set FaceID = {0} where UserID ={1}", rnd.Next(1, 29), i);
cmd.ExecuteNonQuery();
}
要不加上sleep,另外可以每10000个更新组织成一个串,调用一次写库。
{
using (SqlConnection conn = DBOper.CaertConn("UserDB"))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
for (int i = 1; i <= 100000; i++)
{
cmd.CommandText = string.Format("update dbo.AccountsInfo set FaceID = {0} where UserID ={1}", rnd.Next(1, 29), i);
cmd.ExecuteNonQuery();
}
conn.Close();
}}
我试验了下···我改成这样了就还是卡死,因为我要弹出一个窗体提示
ShowState ss = new ShowState();
ss.ShowDialog();
ThreadPool.QueueUserWorkItem(new WaitCallback(UpdateAllFace), null);
ss.Close();
{
Random rnd = new Random();
try
{
using (SqlConnection conn = DBOper.CaertConn("UserDB"))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
for (int i = 1; i <= 100000; i++)
{
cmd.CommandText = string.Format("update dbo.AccountsInfo set FaceID = {0} where UserID ={1}", rnd.Next(1, 29), i);
cmd.ExecuteNonQuery();
}
conn.Close();
}
MessageBox.Show("更新完成!");
}
catch (Exception)
{
MessageBox.Show("更新失败!");
}
}).Start();