C♯相談室 Part31
■ このスレッドは過去ログ倉庫に格納されています
0100デフォルトの名無しさん
2006/04/18(火) 22:59:40やるならこう。
private void button1_Click(object sender, EventArgs e) {
new Thread(new ThreadStart(AddItems)).Start();
}
private void AddItems() {
AddItemCallback callback = new AddItemCallback(AddItem);
for (int i = 0; i < 20; i++) {
Thread.Sleep(200);
ListViewItem item = new ListViewItem(i.ToString());
this.Invoke(callback, new object[]{item});
}
}
private delegate void AddItemCallback(ListViewItem item);
private void AddItem(ListViewItem item) {
this.listView1.Items.Add(item);
}
>>90のコードじゃ、for 内の丸ごと Invoke させてるわけで、つまりそれ全部メインスレッドで動いちゃってる。
正しくは Invoke させるのは Items.Add だけ。
■ このスレッドは過去ログ倉庫に格納されています