Título: .Net C# Tragamonedas Publicado por: 01munrra en 3 Agosto 2016, 05:09 am saludos!!!
estoy haciendo mi proyecto final que es un tragamonedas, y estoy en el cambio de imagen del juego, El Profesor me pidio que no Usara un Timer que usara un BackGroundWorker, entonces programe lo siguiente para el cambio de imagen del juego: Código
inicio el subproceso con: Código
lo detengo dando clic en un boton, ahora la logica del juego es que este cambiando constantemente la imagen de los picturebox, son 4 picture box que estoy usando, y por supuesto tengo 4 BackGroundWorker, uno para cada imagen. el error que me esta generando es el siguiente: Código
da en la linea: Código
que estoy haciendo mal? gracias por su atencion. Título: Re: .Net C# Tragamonedas Publicado por: Eleкtro en 3 Agosto 2016, 12:09 pm Código
Hola Primeramente, ¿eso exactamente con que intención lo haces?. No es necesario tener una variable-contador intermediaria para llevar a cabo las iteraciones, puedes simplificarlo de la siguiente manera: Código
Segundo, esto ya depende de gustos, puedes hacerlo como prefieras, pero yo considero que así te quedaría un código más legible e intuitivo: podrías reemplazar toda esa colmena de condicionales lo por un switch: Código
Código
Tercero y último, el mensaje de error que has mencionado parece ficticio, tiene faltas de ortografia de principio a fín, y no parece tener ningún sentido razonable entre eso del user-code y la mención a la excepción. Por favor, muestra el mensaje de error real, tal y como te lo muestra Visual Studio (preferiblemente en Inglés si te fuese posible,,puesto que las traducciones de los mensajes de error por parte de Microsoft al Castellano ... son lo peor) De todas formas, intuyo que posiblemente tengas un conflicto por intentar manipular un control que no fue creado desde el mismo hilo en donde estás ejecutando el BackgroundWorker. Prueba a intentar utilizar un delegado, de la siguiente manera: Código
Código
Código
Saludos Título: Re: .Net C# Tragamonedas Publicado por: 01munrra en 3 Agosto 2016, 14:10 pm Aplique tu forma y funciono!.. (Y) interesante la logica que le aplicastes, se lo aplique a los 4 PictureBox que tiene el juego, aqui una imagen para que tengas una idea:
(http://dc605.4shared.com/img/bBcByIv8ce/s23/156504de750/Sin_ttulo) lo añadi en un ciclo: Código
e hice esto para ver si se detiene los backgroundWorker: Código
pero no se esta deteniendo, como se hace ps???? Saludos!! Gracias! Título: Re: .Net C# Tragamonedas Publicado por: Eleкtro en 3 Agosto 2016, 15:58 pm pero no se esta deteniendo, como se hace ps???? ( hasta que has mostrado la imagen no habia entendido del todo bien tu duda por que no sabía que era eso de tragamonedas, aquí lo llamamos tragaperras xD ) Piensa en lo siguiente: lo único que tienes hecho hasta ahora es un thread que ejecuta un búcle infinito, ¿cómo esperas poder cancelarlo por arte de mágia sin añadir nada más, si de ese búcle nunca sales? Para que tu thread/backgroundworker se pueda cancelar, debes modificar el código actual (el bloque de código del evento BackgroundWorker.DoWork) para añadir una comprobación que determine si existe una petición/señal de cancelación, y en caso afirmativo, terminar la ejecución de ese bloque de código. Cuando llamas al método BackgroundWorker.CancelAsync(), se activa el valor de la propiedad booleana BackgroundWorker.CancellationPending, ese es el valor que debes controlar dentro de tu búcle infinito para modificar el comportamiento o flujo de tu BackgroundWorker. Es algo muy sencillo, pero lo mejor es que leas y estudies la siguiente documentación (sobre todo el primer enlace, y el ejemplo de código que verás ahí) para que aprendas a hacerlo por ti mismo:
PD: ¿realmente el profesor os ha mandado implementar algoritmos de programación asincrónica sin haberos enseñado antes? Saludos! Título: Re: .Net C# Tragamonedas Publicado por: 01munrra en 3 Agosto 2016, 18:35 pm PD: ¿realmente el profesor os ha mandado implementar algoritmos de programación asincrónica sin haberos enseñado antes? el dio una clase, y ps primero se enredo explicando el tema(no lo explico bien) y segundo dio un ejercicio que cargaba unos datos que estaban en un .TXT y mostraba en el form, pero no tan complejo como un juego como este. Gracias por tu ayuda, me leere esa documentación. Saludos! Título: Re: .Net C# Tragamonedas Publicado por: 01munrra en 4 Agosto 2016, 06:21 am Amigo añadi esto al DOWork:
Código
quedando asi: Código
y si funciona!.... gracias por tu ayuda me ha servido de mucho ;-) |