.net - 在多线程中使用 GDI+ 的问题 (VB.NET)

标签 .net vb.net multithreading gdi+

我认为最好只复制并粘贴代码(这非常琐碎)。

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

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

最佳答案

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

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

关于.net - 在多线程中使用 GDI+ 的问题 (VB.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2663354/

相关文章:

java - 如何在同一程序中多次创建线程的新实例

c++ - QProcess:execute 阻止整个应用程序

c# - 为什么我不能在 C# 中使用 'this.' 来访问我的类常量?

c# - UWP : styling the window buttons does not work on the close button

c# - 我可以通过 ASP.NET 将对象从客户端 javascript 发送到服务器端代码吗?

vb.net - 为什么我的 Excel 工作簿在 Excel 2010 中不可见?

c# - 使用静态方法寻找关于线程安全的建议到 'process' 类实例

c# - cmd不能显示某些字符怎么办?

.net - 在 VB.NET 中使用单个属性实现多个接口(interface)

.net - 派生类的泛型版本可以使用泛型类型重写基方法吗?