Получение «недопустимая операция между потоками» даже при использовании метода invoke - PullRequest
2 голосов
/ 23 декабря 2009

Я получаю «операция с несколькими потоками не действительна» здесь:

if ( vlc.State == VlcPlayerControlState.PLAYING )
        {
            if ( vlc.InvokeRequired )
            {
                vlc.Invoke( new MediaPlayerNoParameterDelegate( vlc.Stop ) );
            }
            else
            {
                vlc.Stop(); // debugger points here
            }
        }

Отладка показывает мне, что vlc не требует вызова. но поток, к которому осуществляется доступ, отличается от потока, в котором он был создан.

Я использую оболочку libvlc.net для воспроизведения звука, но проблема не должна возникать. Как я могу избавиться от этого исключения?

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

Спасибо!

1 Ответ

1 голос
/ 23 декабря 2009

Похоже, это ошибка в оболочках libvlc.net.

Мое предложение было бы просто всегда вызывать vlc.Invoke (...). Вы столкнетесь с (небольшим) падением производительности, когда вызов действительно не требуется, но если вы делаете это из отдельного потока, он всегда будет требоваться в любом случае.

...