|
分類:[.NET 全般]
初投稿ですが質問させてください。
今作っているアプリで次のような問題を抱えています。
【環境】 WindowsXP Embededd SP2 .net Framework2.0
【問題】 Formデザイナに設定した背景イメージを描画しようとするとAccessViolationでアプリが落ちる。 この描画はOnPaintBackgroundでの描画になります。 同じタイミングであれば手動でCreateGraphicsからグラフィクスオブジェクトをつくって描画しても同様の症状になります。
この問題に対してある程度解析すると次のようなことが分かってきました。
・描画処理とほぼ同じタイミングでガベージコレクションが動作する。
恐らくこのタイミングでガベージコレクションのスレッドもGDI+オブジェクトにアクセスしており、 AccessViolationが発生したのだと予想しています。
そこで質問なのですが、
1.GDI+へのアクセス競合以外に描画処理でAccessViolationが発生する可能性があるかどうか? 2.ガベージコレクションを.net Framework2.0で一時的にでも抑制する方法があるかどうか?
本来であれば全てのGDI+に絡むオブジェクトをGCで回収されないようにするのが筋だとは分かっているのですが、 なにぶん量が多いので一時しのぎでも確実に回避できる策を模索しています。
|