【问题标题】:Problem using GDI+ with multiple threads (VB.NET)多线程使用 GDI+ 时出现问题 (VB.NET)
【发布时间】:2010-04-18 18:21:10
【问题描述】:

我认为最好只是复制并粘贴代码(这很简单)。

Private Sub Main() Handles MyBase.Shown
    timer.Interval = 10
    timer.Enabled = True
End Sub

Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    e.Graphics.DrawImage(image, 0, 0)
End Sub

Private Sub tick() Handles timer.Elapsed
    Using g = Graphics.FromImage(image)
        g.Clear(Color.Transparent)
        g.DrawLine(Pens.Red, 0 + i, 0 + i, Me.Width - i, Me.Height - i)
    End Using

    Me.Invalidate()
End Sub

在滴答事件期间引发异常“对象当前正在其他地方使用”。有人能告诉我为什么会发生这种情况以及如何解决吗?谢谢。

【问题讨论】:

  • timer是什么定时器?

标签: .net vb.net multithreading gdi+


【解决方案1】:

Handles timer.Elapsed 表示 System.Timers.Timer。

改用 System.Windows.Forms.Timer,您的问题就不会再发生了。

【讨论】:

  • 好答案。只需指出表单计时器与其所有者控制线程同步,而系统计时器必须在调用跨线程对象之前手动同步。
猜你喜欢
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多