我在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);
}
答案 0 :(得分:3)
通常在foreach
次迭代期间修改集合时会发生这种情况。
例如:
foreach(var item in items){
items.Remove(item);
}
正如您所看到的,正在迭代时正在修改集合。
您没有看到异常的事实可能并不意味着它不存在。也许它被困了。这曾经发生在WPF绑定中。