在按照 MSDN 指南创建一个新线程来更新 UI 控件后,我遇到了一个奇怪的错误。我在 load 方法中运行了同样的查询,它工作得很好,现在在新线程中运行我得到了正确数量的结果,但是我没有得到字段的名称,而是在我的组合框中写入了 16 次 DataSet。谁能帮我这个?
private void Form1_Load(object sender, EventArgs e)
{
recipeListComboBox.Items.Clear();
Thread QueryThread = new Thread(new ThreadStart(updateRecipeList));
QueryThread.Start();
}
private void updateRecipeList()
{
IEnumerable<string> list = recipeList.getList();
foreach (string a in list)
UpdateRecipeComboBox(a);
}
private void UpdateRecipeComboBox(string text)
{
if (this.recipeListComboBox.InvokeRequired)
{
UpdateRecipeComboBoxCallBack d = new UpdateRecipeComboBoxCallBack(UpdateRecipeComboBox);
Invoke(d, new object[] { text });
}
else
{
this.recipeListComboBox.Items.Add(Text);
}
}
delegate void UpdateRecipeComboBoxCallBack(string text);
在我把它放在一个新线程上之前,它看起来像这样:
private void Form1_Load(object sender, EventArgs e)
{
recipeListComboBox.Items.Clear();
IEnumerable<string> list = recipeList.getList();
foreach (string a in list)
recipeComboBox.Items.Add(a);
这将重新运行数据库中 16 个不同接收方的列表,现在我只打印了 16 次 dataSet。
谢谢你的帮助!!
克雷格