2012-06-20 12 views
2

我想繪製到public static Bitmap,這是我的PictureBox - Control的圖像。繪圖在同一個線程中工作正常,但是當我啓動第二個線程時什麼也沒有發生,沒有任何東西被繪製。有誰知道解決方案?C#從第二個線程繪製到位圖

代碼繪製:

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

//編輯:
請原諒我。位圖存儲在稱爲Form1的另一個類中。線程類是DrawHelper。爲了訪問位圖,我給了DrawHelper Form1的引用(從Form1調用)。
我希望這可以幫助。我可以發佈所有代碼,但會有太多不必要的代碼。

+0

我們將需要比這更多的代碼。不過,我懷疑,這個位圖不會在線程之間跳躍。你在做什麼來傳遞信息? –

回答

2

您的位圖被綁定到窗體窗口消息循環。如果您嘗試訪問類似的東西,則必須使用Invoke或BeginInvoke。

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

編輯。閱讀評論後,我可以告訴你,你有一個錯誤,位圖只是沒有得到你認爲它得到的信息。這與使用線程本身無關......

如果你真的需要解決它,你應該創建2線程一個按鈕和一個位圖的簡單原型,只是試圖從線程#2中繪製任何東西,看看是什麼不工作。如果連這個都不行 - 在這裏發佈代碼。 (請不要複製/粘貼整個應用程序 - 保持它一點)

你應該把嘗試/抓住裏面使用。位圖的行爲可能會因爲使用內部存在不可見的異常而發生。

+1

我正在使用Invoke。沒有調用,我得到一個例外,如預期的那樣。 – David

+1

我在調用。現在有例外。位圖不會改變。 – David

+1

對不起三明治*責備*。沒有例外。 – David