“赤十字” MenuStripおよびToolStripの問題
-
05-07-2019 - |
質問
多くのマシンで正常に動作するソフトウェアがありますが、1台のマシンでは時々発生するように見える問題がありますが、MenuStripとToolStripは両方とも空の白い背景に赤の十字が付いて表示されます。 nullオブジェクトを作成した場合、カスタムコントロールになります。これはデバッグ中は発生せず、問題を再発させる方法はわかりませんが、発生します。誰かが問題の可能性を知っているかどうか疑問に思っていましたか?
.NETフレームワークのバージョンですか?
ありがとう
解決
これは、GDI +の問題(「The Red X of Death」)がある場合によく発生します。 OnPaint
でカスタム描画をしていますか?または、グラフィックリソースまたはグリフが破損しているか、不適切に処理されている可能性があります。
編集:質問を読み直しました。これは、マシンの1つでのみあるようです。私はこれを少しグーグルで調べましたが、この古いスレッド。下部の投稿は、仮想メモリがオフになっている問題がある可能性があることを示唆しています。
これをなんとか解決しました-私たちは 実行中のデバイスで問題を確認する XP埋め込み。 XPe画像開発者 仮想メモリをオフにしていたとして 私たちが問題を有効にするとすぐに 去りました。私はそれがただであると信じています システムの枯渇の症状 グラフィックスを表示するメモリ(たぶん 特に多くの場合 ダブルバッファリング)
役立つこと。
他のヒント
編集:
これにより、 System.InvalidOperationException:BufferedGraphicsContext
GUIスレッド以外のスレッドからGUIコントロールを更新しようとしていますか?クロススレッド操作と、すべてを飲み込んだ例外ハンドラーを組み合わせると、メンテナンスしているアプリで(メニューストリップバーではなく、グリッドコントロール上で)説明した動作ができました。
間違いなくクロススレッドの問題のように聞こえます。
メインUIスレッドではないスレッドからコントロールにアクセスしたり、イベントを起動したりする場合は、必ずInvokeを使用してください。
これは、私たちの誇りを持っている1000台以上のコンピューターで発生します。 その1台のコンピューターで、.NET 3.5プログラムがときどきデータグリッドに赤いXを表示しているのを見ています。また、別のはるかに単純な.NET 2.0プログラムでは、menuStripに赤いXが付いています。私はより単純なプログラムのソースコードしか持っていませんが、そのコンポーネントに影響するユーザーコードはまったくないと言えます。何も更新しないので、クロススレッドのものはありません。コンテンツは開発時に設定され、プログラムのロード時に1つのアイテムが追加されます。 Red Xの障害は、プログラムのロード後も問題ありませんでした。
2つの異なるフレームワークで、データバインディングのない1つのプログラムで問題が発生したことに非常に驚きました。コンピューターの仮想メモリがオフになることを願っています。
そうでない場合は、.NET 2.0と.NET 3.5で共有されるシステムパーツに関するガイダンスをいただければ幸いです。
更新:問題のあるユーザーはコンピューターを廃止し、交換しました(これで問題は解決しました)