我想添加项目到一个不同的线程列表视图比它创建和我正在获取跨线程错误。我怎样才能使这个元素在其他线程访问?将项目添加到不同线程的ListView? (跨线程操作无效)
0
A
回答
2
尝试使用属性控制:InvokeRequired - http://msdn.microsoft.com/en-us/library/ms171728%28VS.80%29.aspx
private delegate void AddItemCallback(object o);
private void AddItem(object o)
{
if (this.listView.InvokeRequired)
{
AddItemCallback d = new AddItemCallback(AddItem);
this.Invoke(d, new object[] { o });
}
else
{
// code that adds item to listView (in this case $o)
}
}
0
使用Task
,做了更新,计划使用TaskScheduler.FromCurrentSynchronizationContext
的UI。
http://msdn.microsoft.com/en-us/library/dd997394.aspx
的优势,这种做法在Control.Invoke
是,它会在WPF,Silverlight中,或 Windows窗体工作,而Control.Invoke
是Windows窗体只。
P.S.如果您尚未安装.NET 4.0,则Task
和TaskScheduler
可在Rx library中获得。
相关问题
- 1. c# - 跨线程操作无效ListView
- 2. 跨线程操作无效
- 3. 跨线程操作无效:
- 4. 跨线程操作无效
- 5. 跨线程操作无效
- 6. 跨线程操作无效
- 7. 跨线程操作无效
- 8. “跨线程操作无效”的行为
- 9. VB.NET跨线程操作无效
- 10. BackgroundWorker - 跨线程操作无效
- 11. .NET BackGroundWorker - InvalidOperationException:跨线程操作无效
- 12. 获取跨线程操作SetWindowPos()无效
- 13. VB.net跨线程操作无效
- 14. SerialPorts和多线程 - 跨线程操作无效
- 15. 线程安全问题:跨线程操作无效
- 16. VB.NET [跨线程操作无效:控制'txtIncomingText'从线程访问........]
- 17. 调用目标投掷无效跨线程操作异常
- 18. C++中无SendMessage的跨线程操作
- 19. 跨线程操作Windows应用程序无效
- 20. 跨线程操作控制
- 21. 文本框的值?跨线程操作无效
- 22. 网络表单的跨线程操作无效(需要调用)
- 23. 跨线程操作无效 - DataGridView的更新数据源
- 24. 来自BackgroundWorker2_RunWorkerCompleted in C#的无效跨线程操作
- 25. 内部控件的“跨线程操作无效”异常
- 26. 多线程中的无效操作
- 27. 跨线程操作无效:从其创建的线程以外的线程访问控制'Form2'
- 28. 跨线程操作无效:从其创建的线程以外的线程访问控制'chart1'
- 29. 跨线程操作无效使用调用
- 30. 当读取属性时,跨线程操作无效
是否将此代码添加到我的listview被创建或我要添加到我的listview的位置? – sooprise 2010-09-15 20:06:17