Hola a todos. Estoy probando algunas cosas de programacion de videojuegos, y una de ellas es la animacion de un sprite. El código es el siguiente:
Código:
Public Class Form1
Private sp1 As Sprite
Private thread As New Threading.Thread(AddressOf Act)
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)
sp1.incFrame()
MyBase.Refresh()
End While
End Sub
End Class
El procedimiento Act() es el que se ejecuta al iniciar la apliación. En el mismo defino un nuevo sprite (es una clase creada) y entro en lo que sería el bucle principal del "juego". En este bucle lo que hago es incrementar el frame actual del sprite según el delay que tiene establecido por defecto (esto lo implemento en la clase sprite) y en la segunda línea del cuerpo del bucle intento llamar al método Refresh del formulario para que pinte nuevamente este de manera que se muestre el sprite con su nueva imagen y de la idea de animación. Es en esta línea cuando me sale el siguiente error:
Operación no válida a través de subprocesos: Se tuvo acceso al control 'Form1' desde un subproceso distinto a aquel en que lo creó
¿Es posible realizar esto en .Net? ¿Como hacerlo?
Saludos y gracias de antemano.