我目前正在開發一個Windows平臺的應用程序,它將能夠播放快速時間視頻。 目標操作系統版本是Windows XP,Windows Vista和Windows 7.正確處置QuickTime控件
我成功地使用了Apple ActiveX QuickTime Control 2.0(在C#中),並且在Windows XP上一切正常。
但是,在Vista和Windows 7上,我正面臨着正確處置控制的問題。 以下是「重現步驟」: - 我在運行時動態創建快速時間控件,並將其放置在面板上;
我成功地用它播放視頻;
在某些時候,我關閉了應用程序的主窗體;應用程序窗口被銷燬,應用程序將繼續在後臺運行(執行像同步視頻之類的操作);此時控制使用IDisposable模式進行處理;我無法顯式地處理Movie對象(來自ActiveX控件),因爲我得到如下異常:「與其基礎RCW分離的COM對象無法使用。」;我只是使用(AxQTOControlLib.AxQTControl)player.Dispose();在Windows XP上這是好的,但不是在Vista和7
我恢復我的應用程序(從它在後臺運行的工具欄),並嘗試再次打開視頻;此時會引發AccessViolationException「嘗試讀取/寫入受保護的內存」;
我的問題是:
這究竟是爲什麼只能在Vista和Windows 7?
在XP上是一個隱藏的泄漏?
什麼是在運行時創建控件(使用它的電影對象)時推薦的方式?
現在我使用一個明確的Movie.Disconnect()調用(雖然我不現在這是什麼意思脫節,因爲我無法找到適當的文件)關閉。 雖然我的方法正在工作,但它是一種設計突破,所以我想知道一個更好的方法來做到這一點。
謝謝 Mosu」
更新: 我剛剛發現我的方法不workink。我用於玩家:QuickTime控制和Windows媒體播放器控制(都是ActiveX),當一個播放文件失敗時使用另一個文件。我看到了WindowsMedia播放器的輸出並且認爲這些方法正在工作。 所以我的修復程序根本不起作用。
Yu,相當不好的控制。嘗試隱藏您的表單而不是處置它。 – 2010-03-15 16:23:54
感謝您的回覆。我不能這樣做,因爲所有其他控件(包括控件所在的面板)都正在處理中。 應用程序處於成熟狀態。我被要求添加這個功能。所以這不是一個選項。 – mosu 2010-03-15 17:09:13
不幸的是我有同樣的問題 – 2012-10-10 16:51:38