为了账号安全,请及时绑定邮箱和手机立即绑定

为何在使用while,会在非调试状态下死循环?

为何在使用while,会在非调试状态下死循环?

C#
摇曳的蔷薇 2018-07-23 22:01:11
wpf+c#,为何在使用while并以SelectedItems.Count为条件循环删除选中项目时,会在非调试状态下死循环?问题出现的平台win10 1703 | Visual Studio Community 2017 15.7.4+27703.2035 | .NET Framework 4.7.03056 | CSC 2.8.3-beta6-62923-07相关代码void RemoveFilesListItems(object sender, RoutedEventArgs e){    //有一个名为FilesList的ListBox控件,它的SelectionMode属性的值为Extended     while (FilesList.SelectedItems.Count>0) //原因未知的死循环     {         FilesList.Items.Remove(FilesList.SelectedItems[0]);     } }期待的结果使用FilesList.Items.Remove(FilesList.SelectedItems[0]);这条语句会删除选中的第一个item。我期待这段代码能在SelectedItems.Count>0的时候循环删除第一个item,从而达到批量删除选中item的目的。得到的结果使用vs进行调试,一切正常。编译之后直接运行,选中ListBox中的多个item,但是没有选中全部item的时候,一切正常。编译之后直接运行,选中ListBox中的全部item,执行这个方法,导致死循环(真的是死循环,我尝试在里边添加写txt的语句,运行后txt里边多了一堆内容),程序失去响应。猜测循环过快会导致SelectedItems.Count数值的更新出现问题?希望得到的回答关于这个死循环的原因。我已经换用了别的方式来进行这个操作,只是好奇这个死循环的原因。还请各位解惑,谢谢咯~
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

...你这个代码真是...差点绕进去了

while (FilesList.SelectedItems.Count>0) //原因未知的死循环
    {
        FilesList.Items.Remove(FilesList.SelectedItem);
    }

while (1>0){}本来就是死循环


查看完整回答
反对 回复 2018-07-29
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

FilesList.SelectedItems和FilesList.Items是两个对象,不死才怪

查看完整回答
反对 回复 2018-07-29
  • 2 回答
  • 0 关注
  • 778 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信