none
スクリーンキャプチャにて”ハンドルが無効”エラー RRS feed

  • 質問

  • お世話になっております。

    表題の通り、スクリーンキャプチャでエラーが発生します。

    機能:
    1s毎にスクリーンキャプチャを行う

    コード:

        private Bitmap getScreenCatpure(Point StartPoint, Point EndPoint)
            {
                int abX, abY;
                abX = Math.Abs(EndPoint.X - StartPoint.X);
                abY = Math.Abs(EndPoint.Y - StartPoint.Y);
    
                Size sz = new Size(abX, abY);
                Bitmap screenImage = new Bitmap(abX, abY);
                using (Graphics g = Graphics.FromImage(screenImage)) {
                    g.CopyFromScreen(StartPoint, new Point(0, 0), sz);// エラー発生
                }
    
                return screenImage;
            }

    エラー内容:


    識者の方、どうかご教示ください。

    補足:

    ちなみにこのエラーは実行時に出るものではありません、時間が立つと起こります。
    また、使用メモリは600Mを超えておりメモリの開放が出来ていいないとかでしょうか?

    補足:

    すみません、展開コード以外のメソッドでメモリが開放できていなかった箇所がありました。
    対策後、挙動を確認したいと思います。

    ↑ メモリ解放後は使用メモリが肥大することはなくなりましたが、やはり同エラーで止まります。
    2017年11月7日 22:53

すべての返信

  • 記載されているメソッドを1秒おきに1000回呼び出してみましたが再現しませんでした。
    再現頻度はいかほどでしょうか?

    また他のコードが影響している可能性はありませんでしょうか?


    2017年11月8日 7:02
  • uemu さん、ご回答ありがとうございます。

    再現テストまでして頂いて申し訳ないです。

    私も同メソッドを回してみましたが再現せず、どこで起きているのか
    分かっていない状況です。

    本アプリは、市販品のアプリのデータを利用し拡張したいとの要望で作成したもので
    (市販品アプリの為、データの吸出しがオンメモリでしかできず、それは困るとのこと)
    市販アプリの画像解析によりデータを抽出しています。

    動作確認を行うも、必ず再現するものの、再現するタイミングが違い時間がかかり
    さらにエラーが発生するのが同メソッド内なので探せずにいます、、

    取り急ぎ、キャプチャ画面をロギングし、内容を確認していきます。

    2017年11月8日 8:20
  • Graphics.CopyFromScreen はデスクトップの HDC 取得である GetDC(NULL) と、Graphics クラス自身の HDC、それらを用いた BitBlt という実装になっています。
    この例外が表出しうるのは、BitBlt に渡されたこの 2 つの HDC の一方、または両方が無効であると判定された場合のみです。

    GDI オブジェクトがリークしていて限界を迎えたケースは想像しやすいですが、その他の問題の可能性は正直、難しいと思います。
    ひとまず、ある程度の時間、稼働させて、GDI オブジェクトの数など、何らかのメモリ・リソースの指標が単調増加していないかを観測するところからでしょう。

    おそらくは、そのプログラム固有の不具合、次にある可能性は Windows の不具合なので、第三者が解決につながるコメントを寄せるのは難しいと思われます。

    2017年11月8日 14:02
    モデレータ
  • Azulean さん、ご回答ありがとうございます。

    私も調査した結果、同じような内容のエラーがあるものの、メモリ開放等で解決しており
    固有の環境で起こっているのかと考えていました。

    GDI オブジェクトの数など、何らかのメモリ・リソースの指標が単調増加していないか

    ありがとうございます、その辺りから地道に調査していきたいと思います。

    エラートリガが解りましたら、その内容を展開したいと思います。

    ありがとうございました!

    2017年11月8日 15:10
  • コーベル さん、こんにちは
    フォーラム オペレーターの立花楓です。

    本件について、問題の原因は確認できましたでしょうか。
    既に問題が解決されているのでしたら幸いですが、なにか進展がございましたらこちらのスレッドへご返信いただけますと幸いです。

    また、参考になる情報がありましたら、投稿者からの [回答としてマーク] をお願いします。
     
    宜しくお願いします。


    MSDN/TechNet Community Support 立花楓

    2017年11月16日 7:12
    モデレータ