HOLA UN SALUDO
Actualmente estoy haciendo especie de protector de pantalla con VB.NET.
En mi aplicación muevo una imagen(pictureAstro) por la pantalla del formulario al pasar 2 segundos; hago uso de un THREAD ó hilo el cuál inicia el sub proceso para mover la imagen en pantalla.
El hilo es iniciado con el evento de un timer luego de 2 segundos utilizando el método ".start" del thread; ahora bien la ejecución del hilo es correcta, pero ocurre que quiero hacer uso del evento MouseMove, para que cuando el usuario mueva el mouse por la pantalla, el thread se detenga y active el timer para volver a esperar 2 segundos antes de volver a iniciar el thread y mover nuevamente la imagen, para esto utilizo el ".abort" del thread.
Mi código en resumen :
Imports System.Threading
Public Class Form1
Public x as Integer
Public y as Integer
Private HILO_MOVE As Thread 'Declaramos el hilo
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
x=0
y=0
HILO_MOVE = New Thread(AddressOf astroMove)
'Establecemos el intervalo de tiempo para que inicie el evento
Timer1.Interval = 2000 '2segundos
Timer1.Start()
End Sub
'Función que ejecuta el movimiento de la imágen
Private Sub astroMove()
'Aqui van los codigos para mover una imágen usando :
While True
While x <= 789
x = x + 4
pictureAstro.Location = New Point(x, y)
Application.DoEvents()
System.Threading.Thread.Sleep(100)
End While
End While
End Sub
'EVENTO TIMER
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'Para que al arrancar el hilo no se vaya todo al joraca
Control.CheckForIllegalCrossThreadCalls = False
'Pasado el tiempo, empezamos el hilo para movimiento
HILO_MOVE.Start()
'Esto evita que se vuelva a iniciar pasado el tiempo
Timer1.Enabled = False
End Sub
'EVENTO MOUSE
Private Sub pictureFondo_MouseMove(sender As Object, e As MouseEventArgs) Handles pictureFondo.MouseMove
x = 0
y = 0
Timer1.Enabled = True
HILO_MOVE.Abort()
End Sub
End class
Ahora el error ocurre cuando luego de haber sido abortado el hilo ".abort", es vuelto a ser iniciado por el evento del timer ".start" ya que me genera la siguiente excepción :
Cómo puedo solucionar éste error ?