digital matter

2008 年 8 月 のアーカイブ

DShowNETでSystem.InvalidCastException

以前作ったWebカメラの動画から静止画をキャプチャして保存するプログラムを、ソースをコピーして別のプログラムで使おうとしたらこんなエラーが出た。

型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'DShowNET.ISampleGrabber' にキャストできません。IID '{6B652FFF-11FE-4FCE-92AD-0266B5D7C78F}' が指定されたインターフェイスの COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、この操作に失敗しました: インターフェイスがサポートされていません (HRESULT からの例外: 0×80004002 (E_NOINTERFACE))。

原因がわからなくてしばらく悩んだのだけど、どうやらシングルスレッドアパートメントだとダメらしい…

Main()の定義の前の行で、[STAThread]→[MTAThread]に変更したらできるようになった。

関連する投稿