2016-11-25 7 views
0

Простое приложение, которое меняет видео.MediaPlayer, потребляющий CPU в случайном порядке [UWP] [UI.Composition]

При запуске в диагностическом инструменте CPU поднимается и удерживает около 50% (диспетчер задач 5%) до остановки, другой запуск остается на уровне 5% (диспетчер задач менее 1%).

Код тот же, что и все время. Видео имеют одинаковый формат.

В Профилире производительности я вижу, что nvwgf2umx.dll (nvidia) использует 100% вызов WaitForSingleObjectEx и ReleaseSemaphore.

Почему каждый случайный запуск дает два варианта потребления процессора?

private void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     _playlist = new MediaPlaybackList(); 
     foreach (var uri in _uris) 
     { 
      _playlist.Items.Add(new MediaPlaybackItem(MediaSource.CreateFromUri(uri))); 
     } 

     _mediaPlayer = new MediaPlayer 
     { 
      IsLoopingEnabled = true, 
      AutoPlay = false, 
      IsMuted = true, 
      Source = _playlist, 
     }; 
     _mediaPlayer.SetSurfaceSize(new Size(512, 512)); 

     _visual = ElementCompositionPreview.GetElementVisual(this); 
     _compositor = _visual.Compositor; 

     _surfaceVideoBrush = _compositor.CreateSurfaceBrush(_mediaPlayer.GetSurface(_compositor).CompositionSurface); 
     _surfaceVideoBrush.Stretch = CompositionStretch.UniformToFill; 

     _spriteVisualVideo = _compositor.CreateSpriteVisual(); 
     _spriteVisualVideo.Size = new Vector2(512, 512); 
     _spriteVisualVideo.Brush = _surfaceVideoBrush; 

     ElementCompositionPreview.SetElementChildVisual(Grid, _spriteVisualVideo); 

     _timer.Tick += _timer_Tick; 
     _timer.Start(); 
    } 

    private void _timer_Tick(object sender, object e) 
    { 
     _timer.Interval = TimeSpan.FromMilliseconds(Random.Next(200, 2000)); 
     NextVideo(); 
    } 

    private void NextVideo() 
    { 
     _mediaPlayer.Pause(); 
     _playlist.MoveTo((uint)Random.Next(0, 15)); 
     _mediaPlayer.Play(); 
    } 

XAML имеет только 1 Сетка

PC - i7 4770, NVidia GTX9700

ответ

0

Похоже, ошибка в Visual Studio 2015. Если я открыть этот проект и запустить код - CPU идет вверх. Если я переключусь на дизайнерский вид в Visual Studio во время запуска кода и дождитесь его загрузки - процессор отпадет, и все в порядке.

 Смежные вопросы

  • Нет связанных вопросов^_^