変更したいリストボックスを含むメインフォームクラスがあります。ボックスには、時間のかかる方法で作成されたアイテムが挿入されます。今、それはこのようになります(手で例を発明し、有効なC#ではないかもしれません):別のクラスの別のスレッドからUIを更新する
List<string> strings = StaticClassHelper.GetStrings(inputString);
foreach(string s in strings)
{
listBox1.Add(s);
}
//meanwhile, in a different class, in a different file...
public static List<string> GetStrings(inputString)
{
List<string> result = new List<string>();
foreach(string s in inputString.Split('c'))
{
result.Add(s.Reverse());
Thread.Sleep(1000);
}
return result;
}
私が代わりにやりたい何が新しい文字列が見つかったとして、定期的にリストボックスを更新しています。スレッドメソッドが同じクラスにあるときに私が見つけた他の答えは、イベントハンドラを設定することができます。私はここで何をしますか?
GetStringsが各文字列をゆっくりと取得し、文字列が見つかるたびにリストボックスをバックグラウンドで更新したいと思っていますか? – Bort
@Bort:はい、そうです。 – bossmann