无法调试Collection被修改;枚举操作可能无法执行 - VS2010

时间:2012-05-18 02:07:41

标签: wpf c#-4.0 visual-studio-debugging

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

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

你会做些什么来接触错误的代码?是否可以选择切换以在debug .exe中启用intellisence?我有一条消息告诉我在x86中编译,但这已经在x86模式下编译。


来源

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

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

<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);
}

1 个答案:

答案 0 :(得分:3)

通常在foreach次迭代期间修改集合时会发生这种情况。

例如:

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

正如您所看到的,正在迭代时正在修改集合。

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