Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Tomas1982 en 8 Septiembre 2016, 20:53 pm



Título: Ayuda: Detener procedimiento
Publicado por: Tomas1982 en 8 Septiembre 2016, 20:53 pm
Buenas y saludos ante todo:  Tengo hecha una aplicación en VB.net   que quisiera detener una vez echada  andar, el problema es que al darle al botón que inicia el procedimiento,  me inhabilita todos los de mas botones y no puedo detenerla ni cerrarla hasta que termina. Me pudieran ayudar... :-(


Título: Re: Ayuda: Detener procedimiento
Publicado por: Eleкtro en 8 Septiembre 2016, 23:14 pm
Esto es una pregutna muy típica, pero con una explicación que sería muy larga de explicarte con todos los detalles.

Lee sobre técnicas de programación asincrónica, puedes utilizar la class Thread, la class BackgroundWorker, o la class Task, por este orden que he mencionado de menor a mayor abstracción.

  • Walkthrough: Multithreading with the BackgroundWorker Component (Visual Basic) (https://msdn.microsoft.com/en-us/library/mt679034.aspx)
  • How to: Use a Background Worker (https://msdn.microsoft.com/es-es/library/cc221403%28v=vs.95%29.aspx)
  • Cancel an Async Task or a List of Tasks (Visual Basic) (https://msdn.microsoft.com/en-us/library/mt674898.aspx)

También puedes leer los ejemplos de código que publiqué aquí:
  • http://foro.elhacker.net/net/ejecutar_cmd_en_aplicacion_net-t424496.0.html;msg1976844#msg1976844
  • http://foro.elhacker.net/net/se_me_cuelga_windows_form-t451585.0.html;msg2068045#msg2068045



Si no te ves capaz de implementar nada de eso entonces siempre puedes recurrir a una simple llamada a Application,DoEvents() en un búcle, pero es una metodología imprudente que trae consecuencias, y que la puedas usar depende de a lo que te refieras por "detener", si aplicas esta metodologia y lo que quieres es cerrar el Form entonces debes asegurarte de controlar el evento Form.FormClosing y terminar abrúptamente la ejecución de la app en ese preciso momento.

Saludos!