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の異なるレシピのリストが再実行され、dataSetが16回印刷されるようになりました。
助けてくれてありがとう!
クレイグ