跪求!!跪求!!VB picturebox Graphics.FromImage 对象正在使用的问题

他大舅二舅木头 2019-11-25 11:11:58
两个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
...全文
257 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
面向医学编程 2020-02-09
  • 打赏
  • 举报
回复
多线程确实会出现这个问题,我之前也遇到过。不知道怎么解决,我就加了线程锁进去了
lylkr 2019-12-02
  • 打赏
  • 举报
回复
我遇到过类似问题
3楼的dispose后再执行个垃圾回收命令应该就没问题了,这命令不常用,没记住,上网搜一下吧
  • 打赏
  • 举报
回复
而且,两个线程 代码都差不多,和上面的类似,而且,我是做完一个线程,另外一个线程才开始的
  • 打赏
  • 举报
回复
哭着顶一下
wy_zhou 2019-11-25
  • 打赏
  • 举报
回复
下个线程一定要在上一个线程线束后才能开始,就不会出现这个问题了
  • 打赏
  • 举报
回复
因为它是说对像 在其他地方使用,System.Drawing.Graphics.FromImage(Image image),也就是这个image,在别的地方使用了,只有在这里使用了PictureBox2.Image = bmp3,除了加载对话框的时候,看了别人的方法, 改成PictureBox2.Image = bmp3.clone,而且放到后面来,前面的g3 = Graphics.FromImage(bmp3),就可以了
良朋 2019-11-25
  • 打赏
  • 举报
回复
g3.Dispose()
bmp3.Dispose()

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧