Luiey Ichigo Ответов: 0

Каталог не пуст для mediaelement в данный момент воспроизводит видео


Привет,

Я сохраняю видео в базе данных как blob-объект и извлекаю его обратно при первой загрузке приложения. Это означает, что в App_Startup я получу blob-объект и преобразую байт в видеофайл, установив путь к видео в общедоступную строковую переменную, например D:\data\video.mpeg

Видео будет воспроизводиться на PageMain. xaml в App_Exit, я удалю папку D:\data и все содержимое на нем. Мой код, который я использую, таков:-

Dim files() As String = Directory.GetFiles(target_dir)
        Dim dirs() As String = Directory.GetDirectories(target_dir)
        Try
            For Each filing As String In files
                File.SetAttributes(filing, FileAttributes.Temporary)
                File.Delete(filing)
                Thread.Sleep(50)
            Next filing

            For Each dir As String In dirs
                DeleteDirectory(dir)
            Next dir
            Directory.Delete(target_dir, False)
            Exit Sub
        Catch eio As IOException
            Directory.Delete(target_dir, False)
            Exit Sub
        Catch ea As UnauthorizedAccessException
            Directory.Delete(target_dir, False)
            Exit Sub
        End Try


Итак, во время воспроизведения видео я собираюсь завершить работу приложения через Alt+F4.. и приложение выключено, но папка D:\data он все еще там, но файл video.mpeg уже удален. Мой улов журнала "4/7/2016 2: 19: 30 AM-ERRO- [APPLICATION] ошибка возникает при Application_Exit. Ex-каталог не пуст."

Я пытаюсь найти любой способ прочитать весь байт видео и попытаться сделать поток MediaELement из байта, но ни один из них не был успешно найден работающим на странице Windows.

Как освободиться от источника MediaElement, прежде чем вызвать функцию удаления каталога?

Что я уже пробовал:

## Первая попытка
Для каждой страницы pg As в App. Current.Окна
Если ПГ.Gettype () - Это GetType (PageMain), То
Если нет (IsNothing(DirectCast(pg, PageMain). my_media.Источник)) Затем
DirectCast(pg, PageMain). my_media.Стоп()
DirectCast(pg, PageMain). my_media.Источник = Ничего
Конец, Если
Конец, Если
Следующая страница


## Вторая попытка
Если Файл.Существует(vids_path) Затем
Dim newmed как новый Медиаэлемент
ньюмед.Source = New Uri(vids_path, UriKind.Родственник)
my_media.Источник = newmed.Источник
newmed = ничего
Конец, Если

0 Ответов