使用 GDI 时出现问题多线程 (VB.NET)

发布于 2024-08-29 11:33:49 字数 620 浏览 2 评论 0原文

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

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

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

I think it would be best if I just copy and pasted the code (it's very trivial).

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

An exception, "The object is currently in use elsewhere", is raised during the tick event. Could someone tell me why this happens and how to solve it? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

高冷爸爸 2024-09-05 11:33:50

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

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

The Handles timer.Elapsed indicates a System.Timers.Timer.

Use a System.Windows.Forms.Timer instead and your problem cannot happen anymore.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文