C# 由于枚举原因,添加到ObservableCollection会引发InvalidopeException
以下代码在将第一项添加到ObservableCollection时引发InvalidOperationException 我得到的例外是典型的C# 由于枚举原因,添加到ObservableCollection会引发InvalidopeException,c#,wpf,xaml,exception,binding,C#,Wpf,Xaml,Exception,Binding,以下代码在将第一项添加到ObservableCollection时引发InvalidOperationException 我得到的例外是典型的 InvalidOperationException: Collection was modified; enumeration operation may not execute. …只有一个堆栈跟踪条目 当我添加项目时,WPF是否正在访问我的列表?为什么会出现异常?更改此设置 private void FillRadios() { _radi
InvalidOperationException: Collection was modified; enumeration operation may not execute.
…只有一个堆栈跟踪条目
当我添加项目时,WPF是否正在访问我的列表?为什么会出现异常?更改此设置
private void FillRadios()
{
_radios.Clear();
foreach (KeyValuePair<string, RadioStatus> radio in _state.GetRadios(PlaybackType.ToDataContract()))
{
RadioViewItem viewItem = ViewItemCreator.CreateFrom(radio);
_radios.Add(viewItem); // exception is thrown here
}
}
对此
private void FillRadios()
{
_radios = new ObservableCollection<RadioViewItem>();
foreach (KeyValuePair<string, RadioStatus> radio in _state.GetRadios(PlaybackType.ToDataContract()))
{
RadioViewItem viewItem = ViewItemCreator.CreateFrom(radio);
_radios.Add(viewItem); // exception is thrown here
}
}
我强烈建议使用4个空格作为选项卡,而不是3个。是否可能_state.GetRadios。。。正在通过_radios集合进行枚举吗?如果出现错误,看起来是这样的。很抱歉,我尝试了代码格式设置,但它不起作用@Dtex:no,GetRadios只枚举state类中包含的字典OK,我认为问题在于state类编辑:我错了,问题不在于_state类,我只是返回了一个新项,而不是访问state类,异常仍然发生。这是一个肮脏的修复程序,但我将尝试它,直到找到更好的解决方案,thanks@leozilla这不是一个肮脏的补丁。你搞错了Clear处理可观察集合的方式。好吧,dirty这个词有点难。我知道clear也会重置视图,但我不喜欢创建集合视图类的新实例。
InvalidOperationException: Collection was modified; enumeration operation may not execute.
private void FillRadios()
{
_radios.Clear();
foreach (KeyValuePair<string, RadioStatus> radio in _state.GetRadios(PlaybackType.ToDataContract()))
{
RadioViewItem viewItem = ViewItemCreator.CreateFrom(radio);
_radios.Add(viewItem); // exception is thrown here
}
}
private void FillRadios()
{
_radios = new ObservableCollection<RadioViewItem>();
foreach (KeyValuePair<string, RadioStatus> radio in _state.GetRadios(PlaybackType.ToDataContract()))
{
RadioViewItem viewItem = ViewItemCreator.CreateFrom(radio);
_radios.Add(viewItem); // exception is thrown here
}
}