C#多线程编程的问题

[复制链接]
查看11 | 回复1 | 2010-7-1 11:58:49 | 显示全部楼层 |阅读模式
//填充List
private void AddItems()
{
for (int index = 0; index < 100000; index++)
{

this.lstTest.Items.Add(string.Format("Item {0}", index));

Thread.Sleep(100);//延迟100ms
}
}
//开始
private void btnStart_Click(object sender, EventArgs e)
{
Thread threadAddItems = new Thread(new ThreadStart(this.AddItems));

threadAddItems.Start();//List

}
//查看
private void btnLook_Click(object sender, EventArgs e)
{
MessageBox.Show(this.lstTest.Items.Count.ToString());
}
这样执行没问题 但我改成下面这样就不行
------------------------------------------------------------------
//填充List
private void AddItems()
{
for (int index = 0; index < 100000; index++)
{

this.lstTest.Items.Add(string.Format("Item {0}", index));

Thread.Sleep(100);//延迟100ms
}
}
//开始
private void btnStart_Click(object sender, EventArgs e)
{
Thread threadAddItems = new Thread(new ThreadStart(this.AddItems));

threadAddItems.Start();//List

}
//查看
private void btnLook_Click(object sender, EventArgs e)
{
Thread threadmessage=new Thread(new ThreadStart(Message);
}
private void Message()
{
MessageBox.Show(this.lstTest.Items.Count.ToString());
}
我把 查看显示Item数量 也写成了一个线程 这样为什么不行啊?
不是一个动作理解成一个线程吗?

回复

使用道具 举报

千问 | 2010-7-1 11:58:49 | 显示全部楼层
你上面只用到一个线程threadAddItems也就是add的下面你想用2个线程 一个add 一个show count 是把你下面的这样写啊 //填充Listprivate void AddItems(){ for (int index = 0; index < 100000; index++) {//这里这样写看不懂没关系 记住格式就是了。
listView1.Invoke(new MethodInvoker(delegate
{
this.lstTest.Items.Add(string.Format("It
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行