I'm facing a Collection was modified; enumeration operation may not execute
error in a WPF application under Framework 4.0 in VS2010.
This collection error only happens when I'm launching the compiled debug version of the program. Problem is I'm unable to trace the error as no intellisence informations are given, and I'm not able to find which line of code this error is about.
What would you do to reach the erroned piece of code? Is there an option to toggle to enable intellisence in debug .exe? I have a message telling me to compile in x86, but this is already compiled in x86 mode.
Not sure which part of the code I should paste, but it gives an idea about the 'pattern' of the application.
This is my ListView, binded to a List of < 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">
These are my columns:
<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>
When application starts
myTracks.DataContext = songs;
This is my object
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; }
}
When a song is found:
void lm_SongFound(AudioFile file)
{
songs.Add(file);
}
That usually happens when you modify the collection during a foreach
iteration.
For example:
foreach(var item in items){
items.Remove(item);
}
As you can see, the collection is being modified while it is being iterated.
The fact that you don't see the exception may not mean it doesn't exist. Maybe it's being trapped. This used to happen with WPF bindings.