2012-03-08 11 views
5

私は、mp4をクリックした後にjpg(ループ内)を再生しようとすると、jpgが再び再生されるはずです。私は理由を知りませんが、私がaxWindowsMediaPlayer1_PlayStateChangeで再生した後、再生して停止します。助けて。axWindowsMediaPlayerで2つのビデオを再生する

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace Video 
{ 
    public partial class Form1 : Form 
    { 
     bool clicked = false; 
     public Form1() 
     { 
      InitializeComponent(); 
      axWindowsMediaPlayer1.URL = "wait2.JPG"; 

     } 



     private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) 
     { 
      if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsMediaEnded & clicked== true) 
      { 
       clicked = false; 
       axWindowsMediaPlayer1.settings.setMode("Loop", true); 
       axWindowsMediaPlayer1.URL = "wait2.JPG"; 
       axWindowsMediaPlayer1.Ctlcontrols.play(); 

      } 

     } 

     private void axWindowsMediaPlayer1_ClickEvent(object sender, AxWMPLib._WMPOCXEvents_ClickEvent e) 
     { 
      axWindowsMediaPlayer1.settings.setMode("Loop", false); 
      axWindowsMediaPlayer1.URL = "video.MP4"; 
      axWindowsMediaPlayer1.Ctlcontrols.play(); 
      clicked = true; 
     } 


    } 
} 

答えて

7

誰かがこの質問に投稿したときに返信して欲しいです。 URLプロパティを設定して新しいビデオを開始できなかった理由を理解するのに多くの時間がかかりました。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd562470%28v=vs.85%29.aspx

問題がaxWindowsMediaPlayer1_PlayStateChange()イベントハンドラ内からURLプロパティを設定している:私は最終的にここに、この問題への答えを見つけました。上記のmsdnドキュメントによると:

"このメソッドをイベントハンドラコードから呼び出さないでください。イベントハンドラからURLを呼び出すと、予期しない結果が生じることがあります。

したがって、URLプロパティは偶数ハンドラの外側で設定する必要があります。 Dispatcher.Invoke()を試してみて、イベントハンドラ内から新しいスレッドを開始してURLプロパティを設定しても、それも助けにはならなかった。実際にはイベントハンドラの外側から来る必要があります!

+0

ここに入れていただきありがとうございます!それは有益な情報でした。質問だけでなく答えに+1してください。 – fayyazkl

関連する問題