即使使用invoke方法,也会使“跨线程操作无效”

时间:2009-12-23 17:20:39

标签: .net invoke vlc multithreading

我在这里得到“跨线程操作无效”:

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

调试显示vlc不需要调用。但访问它的线程与创建它的线程不同。

我正在使用libvlc.net包装器播放声音,但问题不应该存在。 我怎样摆脱这个例外?

我使用的是线程而非背景工作者。

谢谢!

1 个答案:

答案 0 :(得分:1)

听起来这是libvlc.net包装器中的一个错误。

我的建议是永远调用vlc.Invoke(...)。当真正不需要调用时,你会遭受(小)性能损失,但是如果你是从一个单独的线程执行此操作,那么无论如何都会一直需要它。