如何从后台线程获得WinPhone 8的屏幕分辨率
本文关键字:WinPhone 屏幕 分辨率 后台 线程 | 更新日期: 2023-09-27 18:07:22
我正在创建一个库。我们需要的一件事是手机的屏幕分辨率像素(宽度乘高度)
我们使用这个方法成功了
Screen.Width = (int) System.Windows.Application.Current.Host.Content.ActualWidth;
Screen.Height = (int) System.Windows.Application.Current.Host.Content.ActualHeight;
但是我们不处理这个方法被后台线程调用的情况,所以我们把它改为使用Dispatcher:
System.Windows.Application.Current.RootVisual.Dispatcher.BeginInvoke(() =>
{
Screen.Width = (int) System.Windows.Application.Current.Host.Content.ActualWidth;
Screen.Height = (int) System.Windows.Application.Current.Host.Content.ActualHeight;
});
然而,我们抛出了一个"无效的跨线程访问"异常,似乎只是在使用BeginInvoke。
我们如何在不引用当前呈现的XAML页面的情况下正确处理这个问题?
仅仅访问Application.Current.RootVisual
会抛出无效的跨线程访问异常,因此您不能以这种方式访问分派器。相反,使用System.Windows.Deployment.Current.Dispatcher
:
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
{
Screen.Width = (int) System.Windows.Application.Current.Host.Content.ActualWidth;
Screen.Height = (int) System.Windows.Application.Current.Host.Content.ActualHeight;
});