Подтвердить что ты не робот

WPF MediaElement перестает играть, если перемещается на другой экран

У меня возникла очень странная проблема с MediaElement, которая, как представляется, связана с многоэкранной средой: иногда (я не могу реплицировать проблему каждый раз) MediaElement перестает играть, когда я перетаскиваю окно с экрана на другое, Этот странный поведение происходит также с очень простым кодом, например:

public MainWindow()
{
    InitializeComponent();
}

protected override void OnSourceInitialized(EventArgs e)
{
    media.Play();
    base.OnSourceInitialized(e);
}

и

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <MediaElement LoadedBehavior="Manual" 
                      Name="media" 
                      Source="C:\Users\Maurizio\Desktop\Pulp Fiction.avi"/>
    </Grid>
</Window>

Кто-нибудь испытал (и в итоге решил) любую аналогичную проблему?

4b9b3361

Ответ 1

Я нашел обходной путь, отключение аппаратного ускорения в рендеринге окна, похоже, решает проблему:

using System.Windows.Interop;
...

    protected override void OnSourceInitialized(EventArgs e)
    {
        HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
        HwndTarget hwndTarget = hwndSource.CompositionTarget;
        hwndTarget.RenderMode = RenderMode.SoftwareOnly;
        media.Play();
        base.OnSourceInitialized(e);
    }

Я не вижу никакой разницы в производительности, и проблема не появляется ни в одном тесте...