C# 调用COM组件时返回了Window.Current.HRESULT E_FAIL

C# 调用COM组件时返回了Window.Current.HRESULT E_FAIL,c#,windows-phone-8.1,screen,dimensions,win-universal-app,C#,Windows Phone 8.1,Screen,Dimensions,Win Universal App,我正在构建一个Windows universal SDK,它将检索用户和设备维度,并试图从非XAML(或相关)类获取设备的屏幕大小。当尝试获取边界时,我收到“HRESULT E_FAIL已从对COM组件的调用返回” 从App.xaml.cs文件的App方法实例化了包含上述代码的我的“Dimensions”类(通过两个父类),现在获取当前窗口是否太早 太快了。我不会在需要时提前缓存数据,而是在需要时查询数据(实际上,您需要缓存以供非调度程序线程使用)。对于通用应用程序,您需要处理窗口大小的更改和多

我正在构建一个Windows universal SDK,它将检索用户和设备维度,并试图从非XAML(或相关)类获取设备的屏幕大小。当尝试获取边界时,我收到“HRESULT E_FAIL已从对COM组件的调用返回”


从App.xaml.cs文件的
App
方法实例化了包含上述代码的我的“Dimensions”类(通过两个父类),现在获取当前窗口是否太早

太快了。我不会在需要时提前缓存数据,而是在需要时查询数据(实际上,您需要缓存以供非调度程序线程使用)。对于通用应用程序,您需要处理窗口大小的更改和多个窗口

如果您是特定于移动的,您应该能够在OnLaunched中获得窗口边界,但是对于SDK来说,处理CoreApplication.Activated事件将更加透明。您可以在应用程序构造函数中将其连接起来,然后在启动时获取窗口详细信息,ActivationKind会告诉您这是一个窗口激活。

此外,这不会告诉您“屏幕大小”-它会告诉您窗口的大小。
var bounds = Window.Current.Bounds;