例外:无法转换类型为' System .__ ComObject'的COM对象。到界面类型

时间:2015-09-18 10:19:04

标签: c# directx-10

对于Directx来说,我是一个新手,并且在两天内一直在努力解决这个问题,但仍然无法让它发挥作用。

我正在尝试使用DirectX Reffered this link捕获视频帧。当我把它放在表单加载中时,代码运行正常如果我尝试从单独的线程或BackgroundWorker类运行代码它抛出异常。我需要继续捕获帧直到视频播放,所以我在表单加载我正在使用此代码 这是我正在使用的代码:

// works fine in the form load and throws exception in the separate thread..why?
     while (capture != null)
                {
                    this.capture.FrameEvent2 += new Capture.HeFrame(this.CaptureDone);
                      this.capture.GrapImg();
                }


public void GrapImg()
    {
        try
        {

            Trace.Write("IMG");

            if (this.savedArray == null)
            {
                int size = this.snapShotImageSize;
                if ((size < 1000) || (size > 16000000))
                    return;

                this.savedArray = new byte[size + 64000];
            }
            this.sampGrabber.SetCallback(this, 1);
            int img = this.sampGrabber.SetCallback(this, 1);
            this.frameCaptured = false;
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString());

        }
    }

无法转换类型为&#39; System .__ ComObject&#39;的COM对象。接口类型&#39; DirectShowInterfaces.ISampleGrabber&#39;。此操作失败,因为QueryInterface调用COM组件上的接口与IID&#39; {6B652FFF-11FE-4FCE-92AD-0266B5D7C78F}&#39;由于以下错误而失败:不支持此类接口(来自HRESULT的异常:0x80004002(E_NOINTERFACE))。

任何热门的建议都会非常感激。

0 个答案:

没有答案