我正在尝试通过将数据加载部分放入后台线程而不是在页面加载时在前台运行,来使WP7应用程序中的页面UI更加响应。
该线程代码基本上通过一些数据并将项目添加到可观察集合中; 为了避免异常问题,我执行类似以下内容:
Deployment.Current.Dispatcher.BeginInvoke(() => { _events.Add(_newItem); });
这样可以确保将项目添加到集合中是在UI线程中完成的。
我现在遇到的问题是,代码的后续部分需要对集合执行foreach操作,以便确定在哪里插入新项目,而不仅仅是添加它。不幸的是,我发现UI线程有时会在我进行foreach循环时执行其添加,立即打破foreach循环。
从我所阅读的内容来看,一种方法是调用EndInvoke()以阻止后台线程直到UI部分完成。不幸的是,看起来Wp7/Silverlight实现不支持EndInvoke。
您有什么建议,可以在开始foreach之前检查是否已完成添加?
谢谢。
Philip