C#关于多线程控制控件,求大神指导

zhou122191865 2012-09-17 04:21:43
delegate void AddMessageToListBoxDelegate(string str);
public void AddMessageToListbox(string str)
{

if (listBox1.InvokeRequired)
{
AddMessageToListBoxDelegate d = AddMessageToListbox;
listBox1.Invoke(d, str);//三个参数为 委托实例 委托的参数

}
else
{
listBox1.Items.Add(str);
listBox1.SelectedItem = listBox1.Items.Count - 1;
listBox1.ClearSelected();
}
}


调试运行的时候,listbox1.item.add已经执行了,但是在界面上面,显示不了已经添加的信息,求哪位大神给看一下是什么原因
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jetable 2012-09-17
  • 打赏
  • 举报
回复
代码没问题,应该是你将AddMessageToListbox作为线程的执行方法了,导致UI线程卡死没有反应,看不出来Item增加的效果。
 private void button1_Click(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(Run, null);
}
private void Run(object pnull)
{
int i=0;
while (true)
{
AddMessageToListbox("第" + i++ + "个");
Thread.Sleep(2000);
}

}

delegate void AddMessageToListBoxDelegate(string str);
public void AddMessageToListbox(object str)
{
if (listBox1.InvokeRequired)
{
AddMessageToListBoxDelegate d = AddMessageToListbox;
listBox1.Invoke(d, str);//三个参数为 委托实例 委托的参数
}
else
{
listBox1.Items.Add(str);
listBox1.SelectedItem = listBox1.Items.Count - 1;
listBox1.ClearSelected();
}
}

这段代码测试没有问题
极地_雪狼 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
代码看上去没问题,完整的代码贴出来吧。
[/Quote]
+1
机器人 2012-09-17
  • 打赏
  • 举报
回复
代码看上去没问题,完整的代码贴出来吧。
yangfan1981 2012-09-17
  • 打赏
  • 举报
回复
AddMessageToListBoxDelegate d = AddMessageToListbox;
listBox1.Invoke(d, str);//三个参数为 委托实例 委托的参数

改为

AddMessageToListBoxDelegate d = new AddMessageToListBoxDelegate (AddMessageToListbox);
this.Invoke(d, new object[] { value });
xuguorong 2012-09-17
  • 打赏
  • 举报
回复
为什么要这样写呢?搞不懂.
直接这样不就行了:
在构造函数里加个 Form.CheckForIllegalCrossThreadCalls = false;

delegate void AddMessageToListBoxDelegate(string str);
public void AddMessageToListbox(string str)
{

this.listbox1.items.add(str);
}
调用的时候:AddMessageToListBoxDelegate addtoList=new AddMessageToListBoxDelegate(AddMessageToListbox);
addtoList(str,null,null);


110,522

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧