Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/10/2008, 15:57
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años
Puntos: 9
Llamada segura a subprocesos

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.
__________________
Add, never Remove