调用CompositionCapabilities.GetForCurrentView时,获取Access被拒绝异常

时间:2017-06-07 08:29:53

标签: c# uwp windows-10 windows-10-universal windows-composition-api

当我致电CompositionCapabilities.GetForCurrentView时,我收到以下异常。

  

System.UnauthorizedAccessException:'访问被拒绝。 (例外   HRESULT:0x80070005(E_ACCESSDENIED))'

public App()
{
    this.InitializeComponent();
    this.Suspending += OnSuspending;

    // Exception happens here.
    var capabilities = CompositionCapabilities.GetForCurrentView();
}

奇怪的是代码编译好了所以我假设API可用。我是否需要在Package.appxmanifest中声明任何功能?

1 个答案:

答案 0 :(得分:2)

你不需要申报任何东西。这个方法太简单了。

因此,不是在构造函数中调用它,而是在创建Window之后立即调用它 -

protected override void OnWindowCreated(WindowCreatedEventArgs args)
{
    if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 4))
    {
        var capabilities = CompositionCapabilities.GetForCurrentView();
        var areEffectsSupported = capabilities.AreEffectsSupported();
        var areEffectsFast = capabilities.AreEffectsFast();
    }

    base.OnWindowCreated(args);
}

请注意,您需要添加一项检查,以查看是否也支持该API,例如上面的代码。