C# 后台工作者 sql
C# background worker sql
我想加载一个方法,该方法使用 backgroundworker 方法将数字从数据库设置到文本字段...我试了好几天都找不到方法,但还是找不到。当我在 DoWork 方法中调用此方法时,没有任何反应。
这是方法;
Int32 id = 0;
string query = "SELECT MAX( CONVERT( SUBSTRING(RefNo, 3) , UNSIGNED INTEGER) ) FROM has.recruitments";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmdda = new MySqlCommand(query, conDatabase);
MySqlDataReader myReader;
try
{
conDatabase.Open();
myReader = cmdda.ExecuteReader();
while (myReader.Read())
{
id = myReader.GetInt32(0);
}
if (!(Application.OpenForms.OfType<Report>().Any()))
{
// MessageBox.Show("Opened");
int id1 = id + 1;
String s = "MP0" + id1;
// MessageBox.Show(s);
textBox5.Text = s;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
您不能从后台线程更新 GUI。这已经在这里讨论了很多次,实际上不值得一提。
问题是,您(像许多其他人一样)错误地使用了后台工作程序。理想情况下,您在 DoWork
中所做的所有工作都不应依赖于 UI(在您的情况下并非如此)。您应该 return 您在 RunWorkerCompleted
事件中评估的结果。
如果您确实需要从后台工作人员进行超出 "finished x% of the work" 的进度更新,您需要在 UI 线程的上下文中调用这些更新。
在您的情况下,后台工作人员旨在在执行数据库查询时保持 UI 响应。所以你应该做的是:
- 在
DoWork
中,只执行查询
- 来自
DoWork
,return一个包含查询值或错误信息的结果
- 计算结果
RunWorkerCompleted
- 从
DoWork
中删除任何 UI 依赖代码
我想加载一个方法,该方法使用 backgroundworker 方法将数字从数据库设置到文本字段...我试了好几天都找不到方法,但还是找不到。当我在 DoWork 方法中调用此方法时,没有任何反应。
这是方法;
Int32 id = 0;
string query = "SELECT MAX( CONVERT( SUBSTRING(RefNo, 3) , UNSIGNED INTEGER) ) FROM has.recruitments";
MySqlConnection conDatabase = new MySqlConnection(constring);
MySqlCommand cmdda = new MySqlCommand(query, conDatabase);
MySqlDataReader myReader;
try
{
conDatabase.Open();
myReader = cmdda.ExecuteReader();
while (myReader.Read())
{
id = myReader.GetInt32(0);
}
if (!(Application.OpenForms.OfType<Report>().Any()))
{
// MessageBox.Show("Opened");
int id1 = id + 1;
String s = "MP0" + id1;
// MessageBox.Show(s);
textBox5.Text = s;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
您不能从后台线程更新 GUI。这已经在这里讨论了很多次,实际上不值得一提。
问题是,您(像许多其他人一样)错误地使用了后台工作程序。理想情况下,您在 DoWork
中所做的所有工作都不应依赖于 UI(在您的情况下并非如此)。您应该 return 您在 RunWorkerCompleted
事件中评估的结果。
如果您确实需要从后台工作人员进行超出 "finished x% of the work" 的进度更新,您需要在 UI 线程的上下文中调用这些更新。
在您的情况下,后台工作人员旨在在执行数据库查询时保持 UI 响应。所以你应该做的是:
- 在
DoWork
中,只执行查询 - 来自
DoWork
,return一个包含查询值或错误信息的结果 - 计算结果
RunWorkerCompleted
- 从
DoWork
中删除任何 UI 依赖代码