不幸的是,在Windows Phone 7中没有像Android那样的“广播接收器”概念,所以我正在尝试做类似的事情。
在我的应用程序中,我运行一个调用函数的后台工作程序,完成后我必须在页面中刷新一些数据。我不知道所需的页面是否会在结束时成为当前页面,所以我必须进行测试。我在一些论坛中找到了这段代码:
var frame = Application.Current.RootVisual as PhoneApplicationFrame;
var startPage = frame.Content as PhoneApplicationPage;
这给了我运行时的“System.UnauthorizedAccessException
”异常。实际上,访问所有Application.Current属性会产生相同的异常。我想要了解的是,如果我无法从后台工作者或线程访问当前页面,为什么我还需要它呢?如果我在主UI线程中,我知道我站在哪个页面?我在这里错过了什么吗?
请帮忙
答案 0 :(得分:1)
您只能从UI线程访问Application.Current
。使用后台线程中的Dispatcher.BeginInvoke
将执行委托给UI线程:
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
// Your code needing Application.Current
});