线程间操作无效: 从不是创建控件“listBox”的线程访问它
2011-09-29 16:04
267 查看
UI上的控件不是线程安全的,所以跨线程的操作UI控件需要通过Invoke的方式:
private object m_SyncObjectForListBox = new object();
private void UpdateListBox(ListBox control, string text)
{
if (control.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(UpdateListBox);
this.Invoke(d, new object[] { control, text });
}
else
{
lock (m_SyncObjectForListBox)
{
control.Items.Add(text);
}
}
}
private object m_SyncObjectForListBox = new object();
private void UpdateListBox(ListBox control, string text)
{
if (control.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(UpdateListBox);
this.Invoke(d, new object[] { control, text });
}
else
{
lock (m_SyncObjectForListBox)
{
control.Items.Add(text);
}
}
}
相关文章推荐
- 线程间操作无效:从不是创建控件 listbox1 的线程访问它.
- 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它
- 经典解决“线程间操作无效: 从不是创建控件的线程访问它”
- 线程编程 线程间操作无效: 从不是创建控件的线程访问它
- 关于线程间操作无效: 从不是创建控件“xx”的线程访问它,错误解决方法
- 线程间操作无效:从不是创建控件 的线程访问它 使用委托
- 转:线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- WinForm解决多线程操作控件问题 线程间操作无效: 从不是创建控件的线程访问它"
- C#学习笔记整理-线程间操作无效: 从不是创建控件“XXXXXXX”的线程访问它。
- 线程间操作无效,从不是创建...控件的线程访问它
- 教你如何解决“线程间操作无效: 从不是创建控件的线程访问它”
- 线程间操作无效: 从不是创建控件“progressBar1”的线程访问它
- 线程间操作无效: 从不是创建控件“”的线程访问它。
- 线程间操作无效: 从不是创建控件"..."的线程访问它
- C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它
- 线程间操作无效: 从不是创建控件“**”的线程访问它 利用委托处理
- 其他信息: 线程间操作无效: 从不是创建控件“控件名”的线程访问它。
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~ 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
- c# 线程间操作无效: 从不是创建控件“0”的线程访问它
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~