兩個Picturebox 對應兩個副執行緒,只運行一個picturebox ,或者兩個一起用的話,偶爾會出現Graphics.FromImage,正在使用的錯誤,System.InvalidOperationException: 物件當前正在其他地方使用。
在 System.Drawing.Graphics.FromImage(Image image)
Private Sub BgDrawPicturebox2_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BgDrawPicturebox2.DoWork
PictureBox2.Refresh()
Dim g3 As Graphics
Dim bmp3 As Bitmap
bmp3 = New Bitmap(470, 240)
PictureBox2.Image = bmp3
g3 = Graphics.FromImage(PictureBox2.Image)
DrawOrdinate2(g3, 1, 5, 35, 220, 435, 20)
DrawaxisValue2(g3)
Drawtarget2(1, g3)
g3.Dispose()
System.Threading.Thread.Sleep(300)
End Sub
uj5u.com熱心網友回復:
哭著頂一下
uj5u.com熱心網友回復:
而且,兩個執行緒 代碼都差不多,和上面的類似,而且,我是做完一個執行緒,另外一個執行緒才開始的uj5u.com熱心網友回復:
g3.Dispose()bmp3.Dispose()
uj5u.com熱心網友回復:
因為它是說對像 在其他地方使用,System.Drawing.Graphics.FromImage(Image image),也就是這個image,在別的地方使用了,只有在這里使用了PictureBox2.Image = bmp3,除了加載對話框的時候,看了別人的方法, 改成PictureBox2.Image = bmp3.clone,而且放到后面來,前面的g3 = Graphics.FromImage(bmp3),就可以了uj5u.com熱心網友回復:
下個執行緒一定要在上一個執行緒線束后才能開始,就不會出現這個問題了uj5u.com熱心網友回復:
我遇到過類似問題3樓的dispose后再執行個垃圾回收命令應該就沒問題了,這命令不常用,沒記住,上網搜一下吧
uj5u.com熱心網友回復:
多執行緒確實會出現這個問題,我之前也遇到過。不知道怎么解決,我就加了執行緒鎖進去了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/71692.html
標籤:VB.NET
上一篇:C# 作業系統檔案夾中的檔案
