亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為何在使用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 關注
  • 840 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號