System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен - C# (236119)

Узнай цену своей работы

Формулировка задачи:

Дела обстоят так. Есть у меня в классе GameForm поле
public System.Windows.Forms.Panel RenderPanel;
В этой панельке я собираюсь отображать видео. В классе Kernel у меня есть такое поле:
public static Control RenderOwner = null;
А вот как выглядит метод Main в классе Kernel:
private static void Main(string[] args)
{   
    GameForm gameForm = new GameForm();
    Application.Run(gameForm);
            
    RenderOwner = gameForm.RenderPanel;
    previewVideo = new Preview();
            
    Thread PipelineThread = new Thread(new ThreadStart(Pipeline));
    PipelineThread.Start();
}
Метод Pipeline запускается в отдельном потоке, а там у нас есть строчка
previewVideo.Start();
Класс Preview:
public class Preview
{
    private Video previewVideo = null;
        
    public Preview()
    {
        previewVideo = new Video("Video\\Preview.wmv");
        previewVideo.Owner = Kernel.RenderOwner;
    }
        
    public void Start()
    {
        if(previewVideo.Playing != true)
            previewVideo.Play();
    }
}
Запускаю проект, мне выдает пустую форму (хотя я уже должен был наблюдать за рендерингом видео). Закрываю, выдает эксепшен
System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен
И ругается на строчку
previewVideo.Owner = Kernel.RenderOwner;
Вопрос, думаю, ясен

Решение задачи: «System.ObjectDisposedException: Доступ к ликвидированному объекту невозможен»

textual
Листинг программы
Application.Run(gameForm);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.375 из 5
Похожие ответы