在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C#  網(wǎng)絡安全/ wpf+c#,為何在使用while并以SelectedItems.Count為條

wpf+c#,為何在使用while并以SelectedItems.Count為條件循環(huán)刪除選中項目時,會在非調(diào)試狀態(tài)下死循環(huán)?

問題出現(xiàn)的平臺

win10 1703 | Visual Studio Community 2017 15.7.4+27703.2035 | .NET Framework 4.7.03056 | CSC 2.8.3-beta6-62923-07

相關(guān)代碼

void RemoveFilesListItems(object sender, RoutedEventArgs e)
{
    //有一個名為FilesList的ListBox控件,它的SelectionMode屬性的值為Extended
    while (FilesList.SelectedItems.Count>0) //原因未知的死循環(huán)
    {
        FilesList.Items.Remove(FilesList.SelectedItems[0]);
    }
}

期待的結(jié)果

使用FilesList.Items.Remove(FilesList.SelectedItems[0]);這條語句會刪除選中的第一個item。我期待這段代碼能在SelectedItems.Count>0的時候循環(huán)刪除第一個item,從而達到批量刪除選中item的目的。

得到的結(jié)果

  • 使用vs進行調(diào)試,一切正常。
  • 編譯之后直接運行,選中ListBox中的多個item,但是沒有選中全部item的時候,一切正常。
  • 編譯之后直接運行,選中ListBox中的全部item,執(zhí)行這個方法,導致死循環(huán)(真的是死循環(huán),我嘗試在里邊添加寫txt的語句,運行后txt里邊多了一堆內(nèi)容),程序失去響應。

猜測

循環(huán)過快會導致SelectedItems.Count數(shù)值的更新出現(xiàn)問題?

希望得到的回答

關(guān)于這個死循環(huán)的原因。我已經(jīng)換用了別的方式來進行這個操作,只是好奇這個死循環(huán)的原因。還請各位解惑,謝謝咯~

回答
編輯回答
未命名

...你這個代碼真是...差點繞進去了

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

while (1>0){}本來就是死循環(huán)

2018年5月18日 12:36
編輯回答
呆萌傻

FilesList.SelectedItems和FilesList.Items是兩個對象,不死才怪

2018年1月23日 21:28