在一个线程里读取一个ListView的值的时候
string strUrl = lvURL.Items[0].SubItems[1].Text.Trim().ToString();
出现"线程间操作无效: 从不是创建控件“lvURL”的线程访问它。"
string strUrl = lvURL.Items[0].SubItems[1].Text.Trim().ToString();
出现"线程间操作无效: 从不是创建控件“lvURL”的线程访问它。"
解决方案 »
- winform datagridview 绑定的是一个mssql的datatime数据
- bitmap参数无效
- 绑定时出现服务器标记的格式不正确
- C# TreeView显示链接数据库的内容,麻烦大虾们给我来个例子或者提示!谢谢!
- <div></div>如何定位!
- +++++++++++高手入+++++++++++++++
- 帮忙详细解释一下一条语句?在线等,马上结分!
- 同样的代码,上面可以运行,下面就不行...大大们帮小弟来看一下啊...
- 最近使用EPPlus 3.1.3操作EXCEL文件的时提示Error saving file E:\\***
- 怎么用C#建立一个COM+服务?
- 数据添加问题,请大家教教。。。
- 想做一个类似QQ的弹出提示框
delegate string GetValueDelegate();
public string GetValue()
{
if (this.InvokeRequired )
{
return this.Invoke( new GetValueDelegate( GetValue ) ) as string;
}
else
{
string strUrl = lvURL.Items[0].SubItems[1].Text.Trim().ToString();
return strUrl;
}
}
通过多线程为基于 .NET 的应用程序实现响应迅速的用户
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misMultithreading.mspx
为Windows应用创建简单的异步调用模式
http://www.microsoft.com/china/MSDN/library/architecture/AsynCallPattern.mspx
楼上说的也对。
对UI元素的访问,必须在UI线程中进行,委托给UI线程即可。
搜搜吧!很多事例的。
Control.CheckForIllegalCrossThreadCalls = false;
就可以了,最后的结果大概是这样: public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}
之后,会去掉挎线程访问的安全检查,采用哪种处理方式要根据需求进行权衡。
建议一般情况还是用委托