Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正确处理QuickTime控件_C#_Activex_Dispose_Quicktime - Fatal编程技术网

C# 正确处理QuickTime控件

C# 正确处理QuickTime控件,c#,activex,dispose,quicktime,C#,Activex,Dispose,Quicktime,我目前正在为Windows平台开发一个能够播放快速视频的应用程序。 目标操作系统版本为Windows XP、Windows Vista和Windows 7 我成功地使用了Apple ActiveX QuickTime控件2.0(C#),并且在Windows XP上运行良好 然而,在Vista和Windows7上,我面临着正确处理控件的问题。 以下是“复制步骤”: -我在运行时动态创建快速时间控件,并将其放置在面板上 我成功地用它播放视频 在某个时候,我关闭了应用程序主窗体;应用程序窗口被破坏,

我目前正在为Windows平台开发一个能够播放快速视频的应用程序。 目标操作系统版本为Windows XP、Windows Vista和Windows 7

我成功地使用了Apple ActiveX QuickTime控件2.0(C#),并且在Windows XP上运行良好

然而,在Vista和Windows7上,我面临着正确处理控件的问题。 以下是“复制步骤”: -我在运行时动态创建快速时间控件,并将其放置在面板上

  • 我成功地用它播放视频

  • 在某个时候,我关闭了应用程序主窗体;应用程序窗口被破坏,应用程序将继续在后台运行(执行同步视频等操作);此时,使用IDisposable模式处理控件;我无法(从ActiveX控件)显式地处理Movie对象,因为我遇到了一个异常,如:“无法使用已与其基础RCW分离的COM对象。”;我只使用(AxQTOControlLib.AxQTControl)player.Dispose();在Windows XP上,这很好,但在Vista和7上则不行

  • 我恢复我的应用程序(从它在后台运行的工具栏),并尝试再次打开视频;此时抛出AccessViolationException“试图读取/写入受保护内存”

我的问题是:

  • 为什么这只发生在Vista和Windows7上

  • XP上是否存在隐藏的漏洞

  • 在运行时创建控件时,建议以什么方式处置该控件(及其电影对象)

我现在使用的是一个显式的Movie.Disconnect()调用(虽然我现在不知道这个断开连接意味着什么,因为我找不到合适的文档),它是在表单关闭之前由QuickTimeTerminate()调用中止的。 虽然我的方法是有效的,但它有点破坏设计,所以我想知道一个更好的方法

谢谢,, 摩苏'

更新: 我刚刚发现我的方法不起作用。我使用的是播放器:QuickTime控件和Windows Media player控件(都是ActiveX),当其中一个无法播放文件时,将使用另一个。我看到了WindowsMedia player的输出,并认为该方法是可行的。
所以我的修正根本不起作用

很多人似乎都有这个错误

本页提供了一种有趣的方法:

发生崩溃的原因是文件句柄仍处于打开状态。我是 通过连接空字符串从Quicktime控件“卸载”电影 指向文件名或URL属性。Quicktime不能处理这个问题 并使原始文件保持打开状态。所以我给他打了电话 实际图像文件(Quicktime也处理图像)的路径 全黑。现在一切似乎都好了


哎呀,真是糟糕透顶。试着隐藏你的表单而不是处理它。谢谢回复。我无法执行此操作,因为所有其他控件(包括控件所在的面板)都已被释放。应用程序处于成熟状态。我被要求添加此功能。所以这不是一个选择。不幸的是,我也有同样的问题