2016-07-28 4 views
0

Ich arbeite an einer UWP-Test-App, in der Protokollaktivierung hinzugefügt werden muss. Die Aktivierungslogik wird in eine Klassenbibliothek geschrieben, die dann als Referenz zur UWP-Test-App hinzugefügt wird. Das Problem ist, wenn ich die Logik in OnActivated-Ereignis der Test-App schreiben, funktioniert es gut, aber wenn die gleiche Logik in einer Funktion in der Klassenbibliothek geschrieben ist und diese Funktion aus dem App.xaml.cs OnActivated-Ereignis aufgerufen wird, Dann wird dieses OnActivated-Ereignis in einer Endlosschleife aufgerufen.Protokollaktivierung in UWP

Muss im OnActivated-Ereignis ein neuer Rahmen erstellt werden?

Antwort

3

Wenn OnActivated aufgerufen wird, müssen Sie überprüfen, ob es bereits initialisiert wurde oder nicht (weil OnLaunched nicht aufgerufen wird) - erstellen Sie den Rahmen und aktivieren Sie das Fenster, falls nicht. Es ist normalerweise möglich, diesen Initialisierungscode zwischen den Ereignissen OnLaunched und OnActivated zu teilen.

protected override void OnActivated(IActivatedEventArgs e) 
{ 
    Frame rootFrame = Window.Current.Content as Frame; 

    // Do not repeat app initialization when the Window already has content 
    if (rootFrame == null) 
    { 
     // Create a Frame to act as the navigation context 
     rootFrame = new Frame(); 

     rootFrame.NavigationFailed += OnNavigationFailed; 

     if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 
     { 
      //TODO: Load state from previously suspended application 
     } 

     // Place the frame in the current Window 
     Window.Current.Content = rootFrame; 
    } 

    // 
    // Handle protocol activation here 
    // 

    // Ensure the current window is active 
    Window.Current.Activate(); 
}