В настоящее время я разрабатываю приложение для платформы Windows, которое сможет воспроизводить видеоролики Quick Time. Целевые версии ОС - Windows XP, Windows Vista и Windows 7.Правильно удалите элемент управления QuickTime
Я успешно использовал Apple ActiveX QuickTime Control 2.0 (на C#), и все хорошо работает в Windows XP.
Однако в Vista и Windows 7 у меня проблемы с правильной утилизацией элемента управления. «Действия по воспроизведению»: - Я создаю динамическое управление Quick Time во время выполнения, и я помещаю его на панель;
Я успешно воспроизводил видео с ним;
В какой-то момент я закрываю основную форму приложения; окна приложения будут уничтожены, и приложение будет продолжать работать в фоновом режиме (выполнение операций, таких как синхронизация видео); на этом этапе управление расположено с использованием шаблона IDisposable; Я не могу явно исключить объект Movie (из элемента управления ActiveX), потому что получаю исключение вроде: «COM-объект, который был отделен от его базового RCW, не может быть использован.»; Я просто использую (AxQTOControlLib.AxQTControl) player.Dispose(); В Windows XP это нормально, но не на Vista и 7
Я восстанавливаю свое приложение (из панели инструментов, где оно работает в фоновом режиме), и попытайтесь снова открыть видео; На этом этапе выбрано AccessViolationException «Попытка чтения/записи защищенной памяти»;
Мои вопросы:
Почему это происходит только на Vista, и Windows 7?
На XP есть скрытая утечка?
Каков рекомендуемый способ утилизации элемента управления (с его объектом фильма), когда он создается во время выполнения?
Я теперь с помощью явного Movie.Disconnect() вызова (хотя я сейчас не то, что это разъединение означает, что я не мог найти надлежащую документацию) с помощью под паром вызовом QuickTimeTerminate() до того, как форма закрыто. В то время как мой метод работает, это своего рода разлочка дизайна, поэтому я хотел бы знать лучший способ сделать это.
Спасибо, MOSU»
Update: Я только что обнаружил, что мой метод не реза. Я использую для игроков: контроль QuickTime и управление проигрывателем Windows Media (как ActiveX), так и когда один из них не воспроизводит файл, используется другой. Я видел выход проигрывателя WindowsMedia и думал, что methos IS работает. Так что мое исправление не работает вообще.
Yuck, довольно мутный контроль. Попытайтесь скрывать свою форму, а не удалять ее. –
Спасибо за ответ. Я не могу этого сделать, потому что все остальные элементы управления (включая панель, на которой сидит элемент управления) расположены. Приложение находится в зрелом состоянии. Меня попросили добавить эти функции. Так что это не вариант. – mosu
У меня такая же проблема, к сожалению –