java 线程访问控件_多线程访问控件问题

你的位置:

问答吧

-> .NET

-> 问题详情

多线程访问控件问题

这是winform程序,用线程控制一个ListBox控件

后台代码如下:

private void MainFrom_Load(object sender, EventArgs e)

{

Control.CheckForIllegalCrossThreadCalls = false;

System.Threading.Timer listBoxt = new System.Threading.Timer(new TimerCallback(qingchu), "", Timeout.Infinite, Timeout.Infinite);

listBoxt.Change(120000, 120000);

}

public void qingchu(object a)

{

try

{

if (this.ListBox.Items.Count > 100)

this.ListBox.Items.Clear();

}

catch (Exception e)

{

WriteDugLogUtil.WriteDugLogs("listbox问题" + e.ToString());

}

}

程序在this.ListBox.Items.Clear();这句话报下面的错

System.NullReferenceException: 未将对象引用设置到对象的实例。

在 System.Windows.Forms.ListBox.ObjectCollection.ClearInternal()

有线程是给listbox加项的。不明白为什么会报控制针?明明this.ListBox.Items.Count这个都大于一百了,怎么还报空指针?

作者: lion_strong

发布时间: 2011-10-09

工作线程访问界面,最好用Invoke,

作者: stonespace

发布时间: 2011-10-09

也可能是其他地方同步操作ListBox,可以考虑锁定ListBox,

lock(ListBox)

{

}

作者: stonespace

发布时间: 2011-10-09

你在使用多线程同时操作一个控件的时候,需要对被操作的控件进行同步操作

作者: wangyong0921

发布时间: 2011-10-09

用invokerequired和beigininvoke

作者: mabaolin

发布时间: 2011-10-09

void m_comm_MessageEvent( string msg)

{

if (txtMessage.InvokeRequired)

{

InvokeCallbackmsgCallback = new InvokeCallback(m_comm_MessageEvent);

txtMessage.Invoke(msgCallback, new object [] { msg } );

}

else

{

txtMessage.Text = msg;

}

}

作者: sj97a007

发布时间: 2011-10-09

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值