3

に描画しようとしています。public static Bitmapこれは私のイメージですPictureBox- Control。描画は同じスレッドで正常に機能しますが、2番目のスレッドを開始しても何も起こらず、何も描画されません。誰かが解決策を知っていますか?

描画するコード:

Graphics g = Graphics.FromImage(screen);  
g.Clear(Color.Black);Brushes.White);  
g.Dispose();

//編集:
すみません。ビットマップは、Form1と呼ばれる別のクラスに保存されます。スレッドクラスはDrawHelperです。ビットマップにアクセスするために、これを使用してDrawHelperにForm1の参照を指定しました(Form1からの呼び出し)。
これがお役に立てば幸いです。すべてのコードを投稿できますが、不要なコードがたくさんあります。

4

1 に答える 1

2

ビットマップはフォームウィンドウのメッセージループにバインドされています。そのようなものにアクセスしようとしている場合は、InvokeまたはBeginInvokeを使用する必要があります。

ここ: http: //msdn.microsoft.com/en-us/library/ms171728.aspx

編集。コメントを読んだ後、私はあなたがバグを持っているとあなたに言うことができます、そしてビットマップはあなたがそれが得ると思う情報をちょうど得ません。スレッド自体の使用とは何の関係もありません...

本当にそれを解決する必要がある場合は、2つのスレッド1つのボタンとビットマップを使用して単純なプロトタイプを作成し、スレッド#2から何かを描画して、何が機能しないかを確認する必要があります。これでもうまくいかない場合は、ここにコードを投稿してください。(アプリ全体をコピーして貼り付けないでください-ある程度まで保持してください)

また、を使用して内部にtry/catchを配置する必要があります。使用中に目に見えない例外があるという理由だけで、ビットマップはそのように動作する可能性があります。

于 2012-06-21T01:31:02.093 に答える