2016-11-25 3 views
0

ビデオを変更するシンプルなアプリケーションです。ランダムにCPUを消費するMediaPlayer [UWP] [UI.Composition]

診断ツールCPUで実行中は、停止するまで約50%(タスクマネージャー5%)上昇し、別の実行は5%(タスクマネージャーは1%未満)のままです。

コードは常に同じです。動画は同じ形式です。

パフォーマンスプロファイラでは、nvwgf2umx.dll(nvidia)100%がWaitForSingleObjectExとReleaseSemaphoreを使用していることがわかります。

それぞれのランダム実行にはなぜ2つのCPU消費量の違いがありますか?

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のデザイナビューに切り替えてロードすると、CPUが後退してすべてが正常です。

関連する問題