どうも、カネスズです。
最近C#でシステム開発を行ってしたのですが、ある日を境に突然メモリに関するエラーが大量に発生しました(; ・`д・´)
今回は、その時に発生したエラーと、その原因、解決法を覚書き程度に記事にしておきたいと思います。
発生したエラー
今回発生したエラーは下記の物です。
- アンマネージ VARIANT からマネージ オブジェクトへの変換中に、無効な VARIANT が検出されました。
- 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
- コード -1073740940 (0xc0000374) で終了しました。
他にも細かいエラーは出ていましたが、おおむね上記3つが発生していました。
発生個所
発生個所はタイトル通り、WebBrowserを使用している部分です。WebBrowserのNavigateにURLを指定し、PDFを表示している箇所でした。
と言っても、NavigateでURLを指定した直後発生するという訳ではなく、しばらくしてから発生する場合もあれば、すぐ発生する時、発生しないときなど様々でした。
また、ブレークポイントで処理を止めている最中にエラーが発生するなど、もう訳が分からない状態です。
原因・対策
原因としてはアセンブリ名を変更したことでした。
正直なぜアセンブリ名を変更しただけでこれらのエラーが発生したのかは分かりません。しかし、作成したシステムをエラー発生時から少しずつ戻していった際、アセンブリ名を変更していたところを戻した瞬間、エラーが発生しなくなりました。
このアセンブリ名を変更しても、WebBrowserを使用していない個所では何の不具合もなく動いてくれています。
WebBrowserが何か悪さをしているのでしょうか……
まだ少しモヤモヤしている状態ですが、いったん解決したので良しとします。
引き続き調べてみて何かわかったら追記したいと思います。
それでは今回はこの辺で。