C# XAML Windows 8应用程序:尝试读取或写入受保护的内存。这通常表示其他内存已损坏

C# XAML Windows 8应用程序:尝试读取或写入受保护的内存。这通常表示其他内存已损坏,c#,xaml,windows-8,windows-runtime,windows-8.1,C#,Xaml,Windows 8,Windows Runtime,Windows 8.1,在清除可观察集合时发生此问题。 这是XAML Windows 8应用程序 示例代码- private static MovieNewsDataSource _dataSource = new MovieNewsDataSource(); private ObservableCollection<DataGroup> _allGroups = new ObservableCollection<DataGroup>(); public ObservableCollection

在清除可观察集合时发生此问题。 这是XAML Windows 8应用程序 示例代码-

private static MovieNewsDataSource _dataSource = new MovieNewsDataSource();
private ObservableCollection<DataGroup> _allGroups = new ObservableCollection<DataGroup>();
public ObservableCollection<DataGroup> AllGroups
{
get { return this._allGroups; }
}


public void MovieNews_DownloadStringCompleted(object sender, ResponseStringArgs e)
        {
            try
            {

                var group = new DataGroup("Group-1",
                   "movie news") { GroupBg = "Green", ItemsRow = "1" };

                var newsObject = e.Result.ToSerializeObject<Data.CelebNews>();

                foreach (var item in newsObject.CelebNewsItems)
                {
                    group.Items.Add(new DataItem(item.NewsTitleInfo.Id,
                            item.NewsTitleInfo.Title,
                            item.Details,"",
                            item.Thumbnail3,
                            item.Thumbnail,
                            item.NewsTitleInfo.Date,
                            item.Writer,
                            group));
                }
                _dataSource.AllGroups.Clear(); //<-- Issue occurs here
                if (group.Items.Count > 0)
                {
                    _dataSource.AllGroups.Add(group);
                }
            }
            catch (Exception ex)
            {
                //TODO: Exception handling
                _dataSource.AllGroups.Clear();
                throw ex;
            }
            finally
            {
            }
        }
private static MovieNewsDataSource _dataSource=new MovieNewsDataSource();
私有ObservableCollection _allGroups=新ObservableCollection();
公共可观测集合所有组
{
获取{返回此。\所有组;}
}
public void MovieNews_下载stringcompleted(对象发送者,响应者args e)
{
尝试
{
变量组=新数据组(“组-1”,
“电影新闻”){GroupBg=“Green”,ItemsRow=“1”};
var newobject=e.Result.ToSerializeObject();
foreach(newObject.CelebNewsItems中的变量项)
{
group.Items.Add(新数据项)(item.newstTitleInfo.Id,
item.NewsTitleInfo.Title,
项目.详情,“,
第3项,
项目.缩略图,
item.NewsTitleInfo.Date,
项目.作者:,
小组),;
}
_dataSource.AllGroups.Clear();//0)
{
_dataSource.AllGroups.Add(组);
}
}
捕获(例外情况除外)
{
//TODO:异常处理
_dataSource.AllGroups.Clear();
掷骰子;
}
最后
{
}
}
例外情况详细信息- System.AccessViolationException未处理 HResult=-2147467261 消息=尝试读取或写入受保护内存。这通常表示其他内存已损坏。 来源=系统 堆栈跟踪: 位于System.Collections.ObjectModel.ObservableCollection
1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
位于System.Collections.ObjectModel.ObservableCollection
1.ClearItems() 位于System.Collections.ObjectModel.Collection`1.Clear() 在DataModel\TrailerDataSource.cs中的Data.TrailerDataSource.TrailerData_下载StringCompleted(对象发送方,ResponseStringArgs e):第376行 在RequestResponseManager.cs:第32行 在System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(对象状态机)上 位于System.Threading.ExecutionContext.RunInternal(ExecutionContext ExecutionContext、ContextCallback回调、对象状态、布尔值preserveSyncCtx) 在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔保存SyncCTX) 在System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run()中 在System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation.b__3(对象状态)中 位于System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore()处 位于System.Threading.WinRTSynchronizationContext.Invoker.InvokeInContext(对象thisObj) 位于System.Threading.ExecutionContext.RunInternal(ExecutionContext ExecutionContext、ContextCallback回调、对象状态、布尔值preserveSyncCtx) 在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔保存SyncCTX) 在System.Threading.WinRTSynchronizationContext.Invoker.Invoke()中
InnerException:

您有什么问题?你有没有试着弄清楚它为什么会发生?简单的代码。。。更改结构等?首先,在错误处理中,您不应
抛出ex
——只应
抛出
。其次,在您尝试查找问题时,我将完全删除该错误处理(或ctrl-alt-e并启用break on抛出的CLR异常)_DownloadStringCompleted似乎是一个事件,但您还没有说是什么类型的。。。这似乎与错误有关。