none
ayuda con en estructura de control if case, pregunta fácil (creo) RRS feed

Respuestas

  • El menú de los Threads existe en todas las versiones, pero solo es visible si el programa está detenido en un breakpoint, de lo contrario no aparece el menú.

    Captura de pantalla

    Sobre el tema de no encontrar dónde se lanza el hilo, recuerda que puede no ser evidente. No necesariamente tiene por qué estar usando claramente un objeto Thread. Puede provenir de la Task Parallel Library, puede ser un AsParallel de Linq, puede ser un Parallel.For, puede ser un Timer de System.Timers, puede ser una aplicación Web con varias llamadas, puede ser una llamada de tipo async, puede ser un evento de un SerialPort, puede ser un evento de un Socket, ...

    Con toda seguridad que VB sí que ejecuta correctamente las instrucciones de control de flujo dentro de su propio hilo. Desde luego, si ves "salteadas" las posiciones de un hilo y las de otro, da la sensación de que el flujo no se está siguendo correctamente.

    lunes, 2 de diciembre de 2019 15:48
  • Viendo el video, casi seguro que lo que te pasa es que es una aplicacion multihilo y al depurar estas viendo donde se meten dos hilos distintos. Es decir, un hilo tiene dia=1 y se mete por el case 1. Al dar un paso al frente, avanza otro hilo que tiene dia=5 y se mete por el case 5. Segun vas avanzando con el depurador, ves lo que hace un hilo y el otro, y por eso da la apariencia de que va saltando de un sitio a otro por el que no se deberia de meter.

    Obviamente en VB6 no te pasaba esto, porque no se podia programar en multi-hilo.

    Para depurarlo, lo mejor es asegurarte de que solo se ejecuta un hilo, buscando el sitio donde lanzas el segundo hilo y evitando lanzarlo mientras estes depurando. Ojo si es una aplicacion web o un web service, cada vez que un cliente le hace una llamada se dispara un nuevo hilo (aunque tu nunca crees un hilo desde tu codigo), y en el debugger ves todos los hilos a la vez y la ejecucion va saltando de uno a otro.

    viernes, 29 de noviembre de 2019 14:42

Todas las respuestas

  • Viendo el video, casi seguro que lo que te pasa es que es una aplicacion multihilo y al depurar estas viendo donde se meten dos hilos distintos. Es decir, un hilo tiene dia=1 y se mete por el case 1. Al dar un paso al frente, avanza otro hilo que tiene dia=5 y se mete por el case 5. Segun vas avanzando con el depurador, ves lo que hace un hilo y el otro, y por eso da la apariencia de que va saltando de un sitio a otro por el que no se deberia de meter.

    Obviamente en VB6 no te pasaba esto, porque no se podia programar en multi-hilo.

    Para depurarlo, lo mejor es asegurarte de que solo se ejecuta un hilo, buscando el sitio donde lanzas el segundo hilo y evitando lanzarlo mientras estes depurando. Ojo si es una aplicacion web o un web service, cada vez que un cliente le hace una llamada se dispara un nuevo hilo (aunque tu nunca crees un hilo desde tu codigo), y en el debugger ves todos los hilos a la vez y la ejecucion va saltando de uno a otro.

    viernes, 29 de noviembre de 2019 14:42
  • Ohh, gracias, entiendo, lo del hilo y que entonces será eso  lo que veo, pero el problema es que finalmente si lo ejecuto sin depurar el sistema no guarda la información, es decir, finalmente lo hace mal (lo que tiene que hacer)

    ¿Puedo detectar los hilos de ejecución y ordenar eso o prescindir de estos ?,  evitar que se lancen, yo estoy en mi ambiente local probando

    estaba tratando de subir un vídeo, pero VB se demora ahora demasiado demasiado, no lo alcanzare a subir ahora.

    ayuda plis


    Roberto

    Intentando desarrollar con Microsoft 
    viernes, 29 de noviembre de 2019 18:34
  • ¿Puedo detectar los hilos de ejecución y ordenar eso o prescindir de estos ?,  evitar que se lancen,

    Para detectarlos, abre en visual Studio la ventana de "Threads" (mientras está parado en un breakpoint, menú Debug -> Windows -> Threads). en ella puedes hacer doble-click en cualquiera de los threads y entonces te lleva en el fuente al punto donde se estaba ejecutando ese thread en particular.

    Para evitar que se lancen, busca el sitio de tu programa en donde los lanzas y ponlo entre comentarios para que no los lance mientras depuras.

    viernes, 29 de noviembre de 2019 19:04
  • Bueno se agradece la ayuda, pero lo cierto es que el problema sigue, para mi VB como lenguaje de programación ya no sirve, hace cosas inesperadas y ya no ejecuta bien las instrucciones de controles de flujo, para el caso, creo que lo de los Hilos que dice Diana son en realidad la ejecución de las clases, pues no veo de donde se lanza un hilo  porque estoy solo yo probando bueno el menú no existe el menú que indica , al menos en esta versión 

    en fin, por ahora, no veo esperanzas con que esto funcione bien :(



    firma

    lunes, 2 de diciembre de 2019 15:29
  • El menú de los Threads existe en todas las versiones, pero solo es visible si el programa está detenido en un breakpoint, de lo contrario no aparece el menú.

    Captura de pantalla

    Sobre el tema de no encontrar dónde se lanza el hilo, recuerda que puede no ser evidente. No necesariamente tiene por qué estar usando claramente un objeto Thread. Puede provenir de la Task Parallel Library, puede ser un AsParallel de Linq, puede ser un Parallel.For, puede ser un Timer de System.Timers, puede ser una aplicación Web con varias llamadas, puede ser una llamada de tipo async, puede ser un evento de un SerialPort, puede ser un evento de un Socket, ...

    Con toda seguridad que VB sí que ejecuta correctamente las instrucciones de control de flujo dentro de su propio hilo. Desde luego, si ves "salteadas" las posiciones de un hilo y las de otro, da la sensación de que el flujo no se está siguendo correctamente.

    lunes, 2 de diciembre de 2019 15:48
  • bueno , no tengo nada ahí, dice que no se permite ver la información, parece ser solo uno


    firma

    lunes, 2 de diciembre de 2019 18:45
  • Por el mensaje de error que sale parece que has usado la opción de adjuntar a un proceso existente, en lugar de iniciar depuración. ¿Qué clase de proceso es?¿Por qué no puedes iniciar depuración con normalidad? Piensa que si estás adjuntándote a un proceso tal como un servicio web, los hilos los lanza internamente, no se verá en ningún sitio de tu programa dónde se están construyendo.
    lunes, 2 de diciembre de 2019 18:51
  • No inicie asociando ningún proceso, solo estoy depurando, y ahora lo hice con el menú, iniciar depuración (no con el botoncito de flecha verde)

    si  es un servicio de CRM  Dynamics 2011, pero ahí no se ejecuta, bueno seguiré a "ciegas", a ver si funciona por accidente. :)

    Digo, porque esto es irrefutable "Con toda seguridad que VB sí que ejecuta correctamente las instrucciones de control de flujo dentro de su propio hilo.", pero ya es una cuestión de fe, ya que no se puede ver. :(







    lunes, 2 de diciembre de 2019 19:41