10

マルチスクリーン環境に関連していると思われる 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>

誰かが同様の問題を経験しましたか (そして最終的に解決しましたか?)

4

1 に答える 1

11

回避策を見つけました。ウィンドウ レンダリングでハードウェア アクセラレーションを無効にすると、問題が解決するようです。

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);
    }

パフォーマンスの違いを認識できず、問題はどのテストでも表示されません...

于 2012-05-18T16:11:47.503 に答える