1

Ich erhalte die folgende Ausnahme, wenn ich CompositionCapabilities.GetForCurrentView aufrufen.Zugriff erhalten ist Ausnahme beim Aufrufen von CompositionCapabilities.GetForCurrentView

System.UnauthorizedAccessException: 'Zugriff verweigert. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))‘

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

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

Das Seltsame ist der Code OK kompiliert, so gehe ich davon aus das API zur Verfügung steht. Muss ich Funktionen in Package.appxmanifest deklarieren?

+0

Tipp: Rufen Sie niemals etwas, nicht einmal einige Ihrer eigenen Klassen, direkt nach der App.InitializeComponent() auf ... es wird ganz sicher fehlschlagen. – LucaLindholm

Antwort

2

Sie müssen nichts deklarieren. Die Methode wird einfach zu früh aufgerufen.

Also anstatt es in den Konstruktor aufrufen, rufen Sie es richtig, nachdem das Fenster erstellt wird -

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); 
} 

Hinweis Sie einen Scheck, um zu sehen hinzufügen wollen, ob das API auch unterstützt wird, wie in dem Code über.

Verwandte Themen