2012-03-08 37 views
5

Tôi cố gắng chơi jpg (trong vòng lặp), sau khi nhấp vào mp4 sẽ được phát sau khi kết thúc, jpg đó sẽ phát lại. Tôi không biết tại sao nhưng sau khi tôi chơi trong rìu chơiWindowsMediaPlayer1_PlayStateChange vido rồi dừng lại. Cứu giúp.Phát hai video với axWindowsMediaPlayer

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; 
     } 


    } 
} 

Trả lời

7

Tôi muốn ai đó đã trả lời câu hỏi này khi được đăng. Tôi đã mất rất nhiều thời gian để tìm ra lý do tại sao tôi không thể bắt đầu một video mới bằng cách đặt thuộc tính URL. Cuối cùng tôi đã tìm thấy câu trả lời cho vấn đề này ở đây:

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

Vấn đề là với thiết lập thuộc tính URL từ bên trong xử lý sự kiện axWindowsMediaPlayer1_PlayStateChange(). Theo tài liệu msdn ở trên:

"Không gọi phương thức này từ mã xử lý sự kiện. URL gọi từ trình xử lý sự kiện có thể mang lại kết quả không mong muốn".

Vì vậy, thuộc tính URL phải được đặt ngoài bộ xử lý ngay cả. Tôi cũng đã thử Dispatcher.Invoke() và thậm chí bắt đầu một chuỗi mới từ bên trong trình xử lý sự kiện để thiết lập thuộc tính URL; nhưng điều đó cũng không giúp được gì. Nó thực sự phải đến từ bên ngoài xử lý sự kiện!

+0

Cảm ơn bạn đã đặt nó ở đây! Đó là thông tin hữu ích. +1 cho câu hỏi cũng như câu trả lời. – fayyazkl

Các vấn đề liên quan