wp7无法从后台工作者获取当前页面

时间:2013-04-24 13:14:43

标签: c# windows-phone-7 backgroundworker

不幸的是,在Windows Phone 7中没有像Android那样的“广播接收器”概念,所以我正在尝试做类似的事情。

在我的应用程序中,我运行一个调用函数的后台工作程序,完成后我必须在页面中刷新一些数据。我不知道所需的页面是否会在结束时成为当前页面,所以我必须进行测试。我在一些论坛中找到了这段代码:

var frame = Application.Current.RootVisual as PhoneApplicationFrame;
var startPage = frame.Content as PhoneApplicationPage;

这给了我运行时的“System.UnauthorizedAccessException”异常。实际上,访问所有Application.Current属性会产生相同的异常。我想要了解的是,如果我无法从后台工作者或线程访问当前页面,为什么我还需要它呢?如果我在主UI线程中,我知道我站在哪个页面?我在这里错过了什么吗?

请帮忙

1 个答案:

答案 0 :(得分:1)

您只能从UI线程访问Application.Current。使用后台线程中的Dispatcher.BeginInvoke将执行委托给UI线程:

Deployment.Current.Dispatcher.BeginInvoke(() => 
{
    // Your code needing Application.Current
});