Pude solucionarlo usando delegados. La estructura del código quedó así:
Código:
Public Class Form1
Private sp1 As Sprite
Private thread As New Threading.Thread(AddressOf Act)
Delegate Sub mydelegate()
Private del As New mydelegate(AddressOf mydelegatesub)
Private Sub mydelegatesub()
sp1.incFrame()
MyBase.Refresh()
End Sub
Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
e.Graphics.DrawImage(sp1.getCurrentImage(), New Point(20, 20))
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
thread.Start()
End Sub
Private Sub Act()
sp1 = New Sprite()
While (True)
MyBase.Invoke(del)
End While
End Sub
End Class
Espero que si alguien tiene el mismo problema con esto también pueda solucionarlo.
Saludos.