MediaTimeline 在關閉 Window 後繼續播放
本文关键字:播放 Window MediaTimeline | 更新日期: 2023-09-27 18:32:22
我有这个代码:
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;
它使用一个新窗口运行,用于播放该特定文件...问题是,如果我关闭窗口,声音会继续播放。所以我猜也是视频。关闭后如何停止?
您需要
通过clock
停止播放器,因为播放器现在由其Clock
控制。如果您直接停止播放器(而不是通过Clock
),您将获得InvalidOperationException
。
PresentationCore 中发生了类型为"System.InvalidOperationException"的未处理异常.dll
其他信息:将时钟分配给媒体播放器时无法执行此操作。
首先,使时钟可控。
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();
}
};