使用c#2005加载影片时出现Quicktime时出错

时间:2012-04-24 15:12:25

标签: .net quicktime

我有一个程序可以从队列中播放视频“.mov”。如果队列中没有视频,则“吸引循环”视频会重新加载。我正在使用在电影结束时触发的事件处理程序“qtEventMovieDidEnd”。这个事件处理程序在被触发时询问队列中是否有任何电影,如果没有它重新加载吸引循环文件并且应该播放它。我的问题是,当事件在电影结束时触发时,它会尝试重新加载文件并引发错误“System.Windows.Forms.dll中出现未处理的类型'System.AccessViolationException'异常”。我可以删除事件处理程序并通过使用按钮单击事件手动加载任何电影并以这种方式加载它,当我这样做时它完美地工作。该错误将Visual Studio .net 2005发送到我的“program.cs”文件并退出。它停在“Application.Run(new Form1())。” 为什么事件处理程序会抛出错误,但是当我手动加载电影时,它的效果很好? 我的代码中的方法:

private void addMovieEventListeners(QTMovie myMovie)
{
    // Make sure a movie is loaded first
    if (myMovie == null)return;
    myMovie.EventListeners.Add(QTOLibrary.QTEventClassesEnum.qtEventClassStateChange,
        QTEventIDsEnum.qtEventMovieDidEnd, null, null);
}

public void PlayMovie(string movie)
{
    axQTControl1.URL = movie;
    addMovieEventListeners(axQTControl1.Movie);
    axQTControl1.Movie.Play(1.0);
    frm1.lblMoviePlaying.Text = axQTControl1.Movie.URL;
}

private void axQTControl1_QTEvent(object sender, _IQTControlEvents_QTEventEvent e)
{
    if (e.eventID == (int)QTEventIDsEnum.qtEventMovieDidEnd)
    {
        axQTControl1.Movie.EventListeners.RemoveAll();
        //MessageBox.Show("Movie Ended");
        PlayMovie(@"C:\AttractLoop\AttractLoop.mov");
    }
}

0 个答案:

没有答案