예제 #1
0
        /// <inheritdoc />
        public void OnMediaEnded(MediaEngine sender)
        {
            if (Parent == null || sender == null)
            {
                return;
            }

            GuiContext.Current.EnqueueInvoke(async() =>
            {
                Parent.PostMediaEndedEvent();

                // ReSharper disable once ConvertIfStatementToSwitchStatement
                if (Parent.UnloadedBehavior == System.Windows.Controls.MediaState.Close)
                {
                    await sender.Close();
                }
                else if (Parent.UnloadedBehavior == System.Windows.Controls.MediaState.Play)
                {
                    await sender.Stop();
                    await sender.Play();
                }
                else if (Parent.UnloadedBehavior == System.Windows.Controls.MediaState.Stop)
                {
                    await sender.Stop();
                }
            });
        }
        /// <inheritdoc />
        public void OnMediaEnded(MediaEngine sender)
        {
            if (Parent == null || sender == null)
            {
                return;
            }

            Library.GuiContext.EnqueueInvoke(async() =>
            {
                Parent.PostMediaEndedEvent();
                var behavior = Parent.LoopingBehavior;

                if (behavior == MediaPlaybackState.Close)
                {
                    await sender.Close();
                }
                else if (behavior == MediaPlaybackState.Play)
                {
                    await sender.Stop();
                    await sender.Play();
                }
                else if (behavior == MediaPlaybackState.Stop)
                {
                    await sender.Stop();
                }
            });
        }
예제 #3
0
        /// <summary>
        /// Called when [media ended].
        /// </summary>
        /// <param name="sender">The sender.</param>
        public void OnMediaEnded(MediaEngine sender)
        {
            if (Parent == null)
            {
                return;
            }

            GuiContext.Current.EnqueueInvoke(() =>
            {
                Parent?.PostMediaEndedEvent();
                switch (Parent?.UnloadedBehavior ?? System.Windows.Controls.MediaState.Manual)
                {
                case System.Windows.Controls.MediaState.Close:
                    {
                        sender?.Close();
                        break;
                    }

                case System.Windows.Controls.MediaState.Play:
                    {
                        sender?.Stop().ContinueWith((t) => sender?.Play());
                        break;
                    }

                case System.Windows.Controls.MediaState.Stop:
                    {
                        sender?.Stop();
                        break;
                    }

                default:
                    {
                        break;
                    }
                }
            });
        }