下面为线程中的部分代码,同时最多可有10个线程,先锁定ListView对象,然后取出第一行数据付给变量并删除此行,如果没有数据了就跳出循环(外层有个循环遍历ListView所有行)然后就结束锁定让其它线程可以操作ListView对象,现在出现问题就是1个线程没有问题,如果有多个线程,最后没有数据的时候总是有1个线程无法退出来,请大家帮我看看我的思路和方法对不对,谢谢
System.Threading.Monitor.Enter(this.ListView);
if(this.ListView.Items.Count>0)
{
s_tel = this.ListView.Items[0].SubItems[0].Text;
s_info = this.ListView.Items[0].SubItems[1].Text;
this.ListView.Items.RemoveAt(0);
}
else
{
break;
}
System.Threading.Monitor.Exit(this.ListView);
System.Threading.Monitor.Enter(this.ListView);
if(this.ListView.Items.Count>0)
{
s_tel = this.ListView.Items[0].SubItems[0].Text;
s_info = this.ListView.Items[0].SubItems[1].Text;
this.ListView.Items.RemoveAt(0);
}
else
{
break;
}
System.Threading.Monitor.Exit(this.ListView);
解决方案 »
- 如何进行2个控件间连线,并且连线后鼠标移动控件连线也随着移动
- 两个帖的分一起,请高手帮忙把一小段JAVA代码翻译成C#
- StreamReader读取问题!~急
- 如何在解决方案里快速地添加现有项目
- 200分问一个线程的问题,在线等
- 如何在Delphi或其它语言中调用C#的DLL
- c#写的windows应用,界面没有响应的问题
- 请教远程文件管理维护
- combobox在输入文本时,能否自动让其成下拉状态?
- 怎样添加自己写的标准控件
- using System.Management;
- 高手帮帮我啊!!!" System.NullReferenceException: 未将对象引用设置到对象的实例,这句话:while(_userConnection.MyReader.Read())"
我的else中的break是用来跳出外层while循环的
if(this.ListView.Items.Count>0)
{
System.Threading.Monitor.Enter(this.ListView);
s_tel = this.ListView.Items[0].SubItems[0].Text;
s_info = this.ListView.Items[0].SubItems[1].Text;
this.ListView.Items.RemoveAt(0);
System.Threading.Monitor.Exit(this.ListView);
}
else
{
break;
}
finally
{
System.Threading.Monitor.Exit(this.ListView);
}
这样感觉可以了,不过手机设备不在,晚上回家测试谢谢 Knight94(愚翁)