Приложение останавливается по неизвестной причине при воспроизведении изображений в методе File Watcher - PullRequest
1 голос
/ 16 декабря 2010

В моем приложении WinForms c # я создал метод, который запускается при создании файла .mp4 в указанной папке.Для этого я запускаю следующий код:

        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Filter = "*.mp4";
        watcher.Path = @"D:\transcoderen";
        watcher.Created += new FileSystemEventHandler(watcher_FileCreated);
        watcher.EnableRaisingEvents = true;

И, наконец, метод:

    void watcher_FileCreated(object sender, FileSystemEventArgs e)
    {
        pictureBox1.Visible = false;
    }

Этот код работает почти полностью.Когда файл .mp4 создается в D: \ transcoderen, метод запускается.Но по неизвестной причине приложение перестает работать, когда я изменяю видимые состояния элемента управления, в моем примере это элемент управления pictureBox.Когда я отлаживаю в Visual Studio 2010, он просто останавливается при попадании:

pictureBox1.Visible = false;

Visual Studio 2010 не выдает ошибку или что-либо еще.Он действует так же, как когда я нажимаю кнопку «Остановить отладку».Кто-нибудь сталкивался с этой проблемой раньше?Если вы это сделаете, есть ли способ обойти это?

Я думаю, что он застрял по какой-то причине, может быть, это как-то связано с тем, что этот метод отслеживает файлы.

Заранее спасибо,

Дэнни

1 Ответ

2 голосов
/ 16 декабря 2010

Если я не ошибаюсь, событие FileWatcher вызывается из другого потока. Вы должны проверить, требует ли pictureBox1 Invoke, используя Control.InvokeRequired Property , а затем вызвать trol.BeginInvoke Method (Delegate)

Также взгляните на Как сделать потокобезопасные вызовы элементов управления Windows Forms

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...