.NET2005 使用线程对控件进行访问的问题

访问控件的时候提示我:线程间操作无效:从不是创建控件“lstMyList”的线程访问它。请问如何在2005里面如何跨线程来调用窗体控件?我的代码如下:(2003里面是可以... 访问控件的时候提示我:线程间操作无效: 从不是创建控件“lstMyList”的线程访问它。
请问如何在2005里面如何跨线程来调用窗体控件?
我的代码如下:(2003里面是可以用的)
(Form1 里面有一个listbox 和 一个button)
public Form1()
{
InitializeComponent();
}

private Thread th;

private void btnStart_Click(object sender, EventArgs e)
{
th = new Thread(new ThreadStart(run));
th.Start();
}

private void run()
{
int sum = 0;
for (int i = 1; i <= 9000; i++)
{
sum += i;
this.lstMyList.Items.Add(sum.ToString());
this.lstMyList.SelectedIndex = this.lstMyList.Items.Count - 1;
Thread.Sleep(100);
}
}
展开
 我来答
夜闻香
2008-03-08 · TA获得超过142个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:0
展开全部
使用委托,更改后的代码如下:

private Thread th;

private void run()
{
int sum = 0;
for (int i = 1; i <= 9000; i++)
{
sum += i;
setList sl = new setList(SetList);
this.Invoke(sl,sum.ToString()); //调用窗体来执行委托
Thread.Sleep(100);
}
}

delegate void setList(string s); //创建一个委托

void SetList(string s) //setList委托的实例
{ //在委托中处理事件
this.lstMyList.Items.Add(s);
this.lstMyList.SelectedIndex = this.lstMyList.Items.Count - 1;
}

厚道就要给分啊~
^_^
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式