0

Collection was modified; enumeration operation may not execute在 VS2010 的 Framework 4.0 下的 WPF 应用程序中遇到错误。

此收集错误仅在我启动程序的已编译调试版本时发生。问题是我无法追踪错误,因为没有给出智能信息,而且我无法找到该错误与哪一行代码有关。

你会怎么做才能找到错误的代码?是否有一个选项可以切换以在调试 .exe 中启用智能?我有一条消息告诉我在 x86 中编译,但这已经在 x86 模式下编译。


资源

不确定我应该粘贴代码的哪一部分,但它提供了有关应用程序“模式”的想法。

这是我的 ListView,绑定到 <AudioFile> 的 List

<ListView AllowDrop="True" Drop="dropMP3" DragEnter="dropMP3Begin"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler"
ScrollViewer.VerticalScrollBarVisibility="Visible"  
ScrollViewer.HorizontalScrollBarVisibility="Disabled" UseLayoutRounding="False" 
ItemsSource="{Binding}" x:Name="myTracks" Margin="0" AlternationCount="2" 
Foreground="#FFEFEFEF" FontSize="13.333" VerticalAlignment="Top" 
SizeChanged="myTracks_SizeChanged" Background="Black" 
MouseDoubleClick="myTracksDoubleClick">

这些是我的专栏:

<GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Artist}">
    <TextBlock Text="Artist"></TextBlock>
</GridViewColumn>
<GridViewColumn Width="Auto" Header="Title" DisplayMemberBinding="{Binding Title}"/>
<GridViewColumn Width="Auto" Header="Album" DisplayMemberBinding="{Binding Album}"/>
<GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Length}">
    <Image Source="Icons\clock.png" Height="15"/>              
</GridViewColumn>

应用程序启动时

myTracks.DataContext = songs;

这是我的对象

public class AudioFile
{
    public String Artist { get; set; }
    public String Title { get; set; }
    public String Album { get; set; }
    public String fileLocation { get; set; }
    public String Length { get; set; }
    public String Track { get; set; }
}

找到歌曲时:

void lm_SongFound(AudioFile file)
{
        songs.Add(file);
}
4

1 回答 1

3

这通常发生在您在foreach迭代期间修改集合时。

例如:

foreach(var item in items){
    items.Remove(item);
}

如您所见,集合在迭代时正在修改。

您没有看到异常的事实可能并不意味着它不存在。也许它被困住了。这曾经发生在 WPF 绑定中。

于 2012-05-18T02:10:52.957 回答