public Scenario1() { this.InitializeComponent(); // Never reuse the cached page because the model is designed to be unloaded and disposed this.NavigationCacheMode = NavigationCacheMode.Disabled; // Setup MediaPlayer view model PlayerViewModel = new PlayerViewModel(Player, Dispatcher); // Handle page load events Loaded += Scenario1_Loaded; Unloaded += Scenario1_Unloaded; // Respond to playback rate changes. Player.MediaPlayerRateChanged += Player_MediaPlayerRateChanged; UpdatePlaybackSpeed(); }
public Scenario1() { this.InitializeComponent(); // Always use the cached page this.NavigationCacheMode = NavigationCacheMode.Required; // Setup MediaPlayer view model PlayerViewModel = new PlayerViewModel(Player, Dispatcher); // Handle page load events Loaded += Scenario1_Loaded; Unloaded += Scenario1_Unloaded; // Respond to playback rate changes. Player.MediaPlayerRateChanged += Player_MediaPlayerRateChanged; UpdatePlaybackSpeed(); }
private void Scenario1_Unloaded(object sender, RoutedEventArgs e) { Debug.WriteLine("Scenario1_Unloaded"); // Ensure the page is no longer holding references and force a GC // to ensure these are unloaded immediately since the app has // only a short timeframe to reduce working set to avoid suspending // on background transition. SettingsService.Instance.UseCustomControlsChanged -= SettingsService_UseCustomControlsChanged; PlaybackList.ItemFailed -= PlaybackList_ItemFailed; PlayerViewModel.Dispose(); PlayerViewModel = null; GC.Collect(); }