Объединение EndInvoke с BeginInvoke для события PlayStateChange

У меня есть код, который загружает список воспроизведения и воспроизводит видео один за другим, вызванный событием PlayStateChange AxWindowsMediaPlayer. Прочитав несколько примеров, я реализовал BeginInvoke, чтобы задержать код во время воспроизведения видео. Кажется, что мне нужно реализовать EndInvoke, потому что у меня возникают проблемы с функциональностью моего кода, продолжающегося после воспроизведения видео. Как я должен идти об этом? Я не мог понять это из опубликованных примеров и руководств MSDN. Вот мой код:

        public void playItem(Item it)
    {
        player.CreateControl();
        player.Enabled = true;
        player.enableContextMenu = false;
        player.uiMode = "none";
        player.Name = "player";
        player.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom;
        WMPLib.IWMPMedia media;
        WMPLib.IWMPPlaylist playlist = player.playlistCollection.newPlaylist("myplaylist");
        for (int x = 0; x < _presented.count; x++)      
        {
            media = player.newMedia(_presented.getItem(x).video);
            playlist.appendItem(media);
        }
        player.currentPlaylist = playlist;
        player.PlayStateChange += player_PlayStateChange;
    }

    private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
    {
        if (e.newState == 8)
        {
            this.player.BeginInvoke(new Action(() =>
            {
                if (p_onset)
                {
                    player.Ctlcontrols.play();
                }

            }));
            //Maybe Implement EndInvoke here?  Unsure of the proper syntax for this scenario
           }
         }

0 ответов

Другие вопросы по тегам