【问题标题】:MediaTimeline keeps playing after closing Window关闭窗口后 MediaTimeline 继续播放
【发布时间】:2014-11-29 13:44:06
【问题描述】:

我有这个代码:

        MediaTimeline timeline = new MediaTimeline(new Uri(@path, UriKind.Relative));
        MediaClock clock = timeline.CreateClock();
        System.Windows.Media.MediaPlayer player = new System.Windows.Media.MediaPlayer();
        player.Clock = clock;
        VideoDrawing drawing = new VideoDrawing();
        drawing.Rect = new Rect(0, 0, 300, 200);
        drawing.Player = player;
        DrawingBrush brush = new DrawingBrush(drawing);
        New_WEBMPlayer_Wnd.Background = brush;

使用新窗口运行以播放该特定文件...问题是如果我关闭窗口,声音会继续播放。所以我也猜视频。关闭后如何停止?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    您需要通过clock 停止播放器,因为播放器现在由其Clock 控制。如果您直接停止播放器(不是通过Clock),您将获得InvalidOperationException

    PresentationCore.dll 中出现“System.InvalidOperationException”类型的未处理异常

    附加信息:在为媒体播放器分配时钟时无法执行此操作。

    首先,制作时钟controllable

    MediaClock clock = timeline.CreateClock(true) as MediaClock;
    

    然后你这样阻止玩家,

    if (clock.CurrentState != ClockState.Stopped)
    {
        clock.Controller.Stop();
    }
    

    总结一下,工作代码是这样的

    MediaTimeline timeline = new MediaTimeline(new Uri(@path, UriKind.Relative));
    MediaClock clock = timeline.CreateClock(true) as MediaClock; //make the clock controllable
    MediaPlayer player = new MediaPlayer();
    player.Clock = clock;
    VideoDrawing drawing = new VideoDrawing();
    drawing.Rect = new Rect(0, 0, 300, 200);
    drawing.Player = player;
    DrawingBrush brush = new DrawingBrush(drawing);
    New_WEBMPlayer_Wnd.Background = brush;
    
    //stop the clock when player window is closed
    New_WEBMPlayer_Wnd.Closed += (s, e) =>
    {
        if (clock.CurrentState != ClockState.Stopped)
        {
            clock.Controller.Stop();
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-10
      • 2019-01-27
      • 1970-01-01
      • 2018-10-12
      • 2017-04-14
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多