la recomendación es que async/await sean utilizados en operaciones de I/O (web services, bases de datos, networking, file system, etc) para que el procesador se libere y pueda ejecutar código mientras espera la respuesta del task. Otra ventaja es que en métodos anidados, si ponemos un await y la tarea aún sigue ejecutándose, en el método padre se puede seguir ejecutando código hasta que se encuentra un nuevo await
la parte "en el método padre", supongo que te refieres al caller o el método donde llamamos a resultados asíncronos, en este caso no continúa ejecutándose (a menos que no uses el `await` delante del método asíncrono que estás llamando desde el caller), si usamos await por delante, el caller espera el resultado, la diferencia en este caso reside en el hecho de que nuestro caller "se libera", es decir nuestro caller no se bloquea esperando el resultado del await, solo se "encola" la tarea hasta que el resultado del await llegue, liberando al CPU para que pueda hacer otras tareas, una vez el resultado del await llegue, nuestro proceso principal (del caller) se reanuda, continuando la ejecución regular, como si de un programa síncrono se tratara. Lo importante a notar acá es que ya no bloqueamos a nuestro hilo principal cuando estamos esperando por resultados I/O sino se pone en pausa y notifica al procesador que se libere hasta que `await` nos avise que ya podemos reanudar nuestra ejecución principal, de esta forma nuestro procesador tendrá tiempo para hacer otras cosas. Una analogía fácil sería que antes hacíamos colas para que nos atiendan (las personas por delante eran nuestros procesos I/O) pero ahora tu puedes sacar una cita y simplemente vas a la hora que te toca en lugar de estar esperando en la cola (en este caso te evitas el tiempo de hacer cola y en su lugar puedes hacer otras cosas de tu día a día)
Excelente, muy bien explicado. Me gustan tus publicaciones. Como programadores hay conceptos que para entenderlos te pueden llevar semanas de búsqueda y lecturas, gracias por compartir en 15 minutos lo que seguro al inicio te pudo llevar más que eso.
Hasta que por fin he comprendido las tareas en C#. Solía utilizar Background una herramienta disponible en C# en dónde hacía las tareas en segundo plano tal como respaldar una base de datos en un hilo secundario a tu main.. Gracias por el vídeo 🙏
Excelente video, gracias por estos vídeos cortos dónde nos enteramos de ciertas funcionalidades y cosas que son muy útiles y que en algunos caso tenemos que reinventar la rueda por el simple echo de no saber que ya existe algo que soluciona el problema
Saludos buen video, anteriormente programe en Windows form pero deje durante unos años de programar ahora que regreso a c# y aprender asp.net eh encontrado muchas cosas nuevas e interesante y tus videos me están sirviendo.
Hola Hector, muy bueno tu canal, los videos que he visto hasta ahora están muy bien explicados y sin falacias o verdades a medias. Es difícil encontrar videos pros como estos en UA-cam y que además estén en español. Gracias.
La imolementacion de Task es genial, es un wrapper de Threads que hace que manipular hilos se muy sencillo. Vengo de las época de ma eso de hilos en C, C++ y viejas versiones de .net y Admito que era un dolor de cabeza usarlos, hilos, semáforos, funciones de callback para manipular las respuestas , enviarles parámetros a tareas también tenía su complicación.
Buenas, soy nuevo en tu canal. La verdad la teoría la conozco, por lo menos lo básico y en que casos usar estos async, pero no sabia muy bien como implementarlo en .net o como funciona. Tuve que implementar un Quartz y estuve 1 semana aprox para hacerlo y entendia apenas lo que estaba haciendo. Con este video entendi y ahora sé como mejorar el desarrollo que hice. Explicas muy bien lo que aprendiendo solo te puede tomar hasta el quintuple de tiempo. Ahora voy de camino por las buenas practicas, pero tu canal me va ayudar muchisimo. Saludos
Gracias profe. Estaba ejecutando un Process que me guardaba un archivo .pfx en una carpeta y en la siguiente linea inmediatamente buscaba el archivo para obtenerlo, pero al parecer cuando lo buscaba no existía, con esto me di cuenta que tenia que esperar hasta que el proceso terminara de crear el archivo asíncronamente para después hacer uso del archivo
No se si ya tienes videos de Task chaining, el manejo de los token para detener las task y muchas otras funciones que también aplican. Esto es parte importante del desarrollo backend.
tus videos me gustan mucho, he visto varios y abordas inquietudes sobre c# que otros sitios no lo hacen, como este. ojala sigas subiendo cosas, saludos
muy claro el ejemplo. ¿podrias extenderte en la diferencia entre usar task vs thread? con est no logro ver cual es la ganancia de usar uno u otro. gracias
Hola ! Pasaba a dejarte un comentario agradeciéndote por todos los videos tuyos y lo bien explicado de tu contenido, me estas ayudando mucho a entender cosas que tengo que hacer en mi dia a dia! Gracias y saludos desde Argentina ❤
Excelente video, tus seguidores te pedimos más ejemplos de async await y Windows form. Con ejemplos de casos reales 🙏🙏. Gracias ayudas a muchos. Te amamos Hector
muchas gracias por la explicación, por favor sería bueno una lista de curiosidades así, cosas simples pero muy útiles y poco conocidas, al menos para mi.
excelente videooo, una duda con esto puedo aplicarlo al llamr un job y esperar a que termine , mi duda es si en los milisegundos tengo que poner el tiempo que puede tardar el job en ejecutar
Gracias, solo que me quedo la duda entre Task y Thread, porque pareciera que funcionan de manera similar, aunque imagino que Thread trabaja de diferente forma
muy buenos tus videos hector,, agarrando cosas puntuales. Un dia podrias hacer como generar un setup con click one. para q los nuevos sepan como publicar sus proyectos de winforms
Hola, buen video, una consulta, cuando se pone 'await' quiere decir que un hilo queda esperando a que se termine la tarea , pero los demas hilos del procesador siguen ejecutanto otras tareas?
Man, aviéntate un video donde uses eso de theads pool, donde se puedan lanzar tantos procesos como permita el SO y conforme se vaya liberando/terminando un proceso en corto iniciar otro. El contexto para que me gustaría ocuparlo es para crear un servicio de windows que convierta videos de un formato a otro con ffmpeg, actualmente mi proceso solo convierte un video a la vez pero tarda un friego y son chorro de videos que se generan día a día y quisiera ajustar la aplicación para realizar varios procesos de conversión en paralelo. Saludos!
Hola excelente tu video, quizas podrias guiarme estoy tratando de llenar dos grids en una misma pantalla pero quiero q sea async, es decir el un grid lo consulto desde mi base y es rapido, pero el segundo es desde un WS externo, entonces tengo el problema que al consultar un dato el grid desde mi base demora lo mismo que el grid desde el WS, por eso quiisera hacerlo asincrono, por fa como lo podria hacer, gracias
Una duda. Si tengo que lanzar un conjunto de consultas a la bd que no tienen relación entre ellas pero a posteriori ese conjunto de resultados me va a servir para mostrar un dash en ese caso podria usar task con cada query no? y deberia hacer el await de todos los task. Si tengo consultas dependientes, es decir si la consulta n se debe ejecutar con algun valor de n-1 no tiene sentido usar task cierto?
Si te ha gustado el video puedes apoyarme dejándome un pulgar arriba 👍
Hashtag #pavadas
Excelente bro
Estaria interesante que hicieras un video de como cancelar una operacion de un task :) un saludo!
Explicación clara y puntual. Excelente.
Grande Hector, muchas gracias por el contenido, puro c#lover
Excelente explicación y pude comprender el funcionamiento de Task de manera sencilla y por qué se pone el await y demás... sos crack!
la recomendación es que async/await sean utilizados en operaciones de I/O (web services, bases de datos, networking, file system, etc) para que el procesador se libere y pueda ejecutar código mientras espera la respuesta del task. Otra ventaja es que en métodos anidados, si ponemos un await y la tarea aún sigue ejecutándose, en el método padre se puede seguir ejecutando código hasta que se encuentra un nuevo await
Es como el Join en los threads?
En las interfaces graficas también se necesitan tas tareas e hilos, sino la interfaz se congela hasta que la tarea termine
la parte "en el método padre", supongo que te refieres al caller o el método donde llamamos a resultados asíncronos, en este caso no continúa ejecutándose (a menos que no uses el `await` delante del método asíncrono que estás llamando desde el caller), si usamos await por delante, el caller espera el resultado, la diferencia en este caso reside en el hecho de que nuestro caller "se libera", es decir nuestro caller no se bloquea esperando el resultado del await, solo se "encola" la tarea hasta que el resultado del await llegue, liberando al CPU para que pueda hacer otras tareas, una vez el resultado del await llegue, nuestro proceso principal (del caller) se reanuda, continuando la ejecución regular, como si de un programa síncrono se tratara. Lo importante a notar acá es que ya no bloqueamos a nuestro hilo principal cuando estamos esperando por resultados I/O sino se pone en pausa y notifica al procesador que se libere hasta que `await` nos avise que ya podemos reanudar nuestra ejecución principal, de esta forma nuestro procesador tendrá tiempo para hacer otras cosas.
Una analogía fácil sería que antes hacíamos colas para que nos atiendan (las personas por delante eran nuestros procesos I/O) pero ahora tu puedes sacar una cita y simplemente vas a la hora que te toca en lugar de estar esperando en la cola (en este caso te evitas el tiempo de hacer cola y en su lugar puedes hacer otras cosas de tu día a día)
Hermano.... mira que he buscado información sobre programación asíncrona... en 15 minutos he aprendido más que en 2 horas de clases...Muchas gracias.
Saludos desde Cusco, gracias por la explicación, simple y directo, sigue adelante.
Excelente, muy bien explicado. Me gustan tus publicaciones. Como programadores hay conceptos que para entenderlos te pueden llevar semanas de búsqueda y lecturas, gracias por compartir en 15 minutos lo que seguro al inicio te pudo llevar más que eso.
Lo explicaste muy bien, sencillo con ejemplos. Me hubiera gustado tener este video 6 años atrás jajaja. Mil gracias
He comprendido más conceptos de c# que nunca. Felicidades #elpavadas 👍
Gracias Hector, aportas mucho a la comunidad, Dios te bendiga!
Excelente. Recibe un saludo desde España...
Eres el mejor explicando C#. Gracias por tus videos Bro.
Qué buen video, sería bueno que adicional a este video crearas uno explicando Task.FromResult y Task.CompletedTask, saludos hermano!
Saludos desde Italia de un paraguayo. Excelentes tus videos!
Eres el único que si explica bien
No le habia entendido a nadie hasta que vi este video. Buena explicacion
Hasta que por fin he comprendido las tareas en C#. Solía utilizar Background una herramienta disponible en C# en dónde hacía las tareas en segundo plano tal como respaldar una base de datos en un hilo secundario a tu main..
Gracias por el vídeo 🙏
La mejor explicación para async & await de todo internet 👍
Excelente video, gracias por estos vídeos cortos dónde nos enteramos de ciertas funcionalidades y cosas que son muy útiles y que en algunos caso tenemos que reinventar la rueda por el simple echo de no saber que ya existe algo que soluciona el problema
Saludos desde Argentina
14 minutos bien chingones.... !!
hombre excelente video y gran forma de explicar!
Un saludo desde Rep Dom!
Hola Hector.! este es el primero de tus videos que he visto y dejame decirte que explicas muy bien, te felicito 👏
muy buen video, he aprendido c# contigo, saludos desde Venezuela.
Dios te bendiga mijo
Saludos buen video, anteriormente programe en Windows form pero deje durante unos años de programar ahora que regreso a c# y aprender asp.net eh encontrado muchas cosas nuevas e interesante y tus videos me están sirviendo.
Excelente! Tus explicaciones son muy claras, necesitaba entender esto y ha quedado mas que claro!
Hola Hector, muy bueno tu canal, los videos que he visto hasta ahora están muy bien explicados y sin falacias o verdades a medias. Es difícil encontrar videos pros como estos en UA-cam y que además estén en español. Gracias.
Aunque soy solo una aprendiz , tu explicación es super clara!muy bueno
Buenísimo. Paso a paso desde lo más básico.
Excelente Hector la sigues sacando del estadio. Gracias por compartir conocimiento.
Extremadamente claro. Soy fan a partir de este video. Saludos.
Me cayó como anillo al dedo, muy bien crack
Eres un capo Héctor!, me sirvió de mucho
Excelente, por fin entendi como hacer un task
Hola, gracias por la explicación, soy tu fan!
Gracias, me ayudó a entender y a poder implementarlo
Recién empecé a leer sobre métodos async y esto me dejo mas claro de como usarlos. Eternamente agradecido.
Me encanta tu canal, explicas muy bien Hector. Y tus videos son super entretenidos de ver. 10/10
La imolementacion de Task es genial, es un wrapper de Threads que hace que manipular hilos se muy sencillo. Vengo de las época de ma eso de hilos en C, C++ y viejas versiones de .net y Admito que era un dolor de cabeza usarlos, hilos, semáforos, funciones de callback para manipular las respuestas , enviarles parámetros a tareas también tenía su complicación.
Gracias a ti entendi este tema despúes de buscar muchos recursos.
Magistralmente explicado. Te felicito!!!
Buenas, soy nuevo en tu canal. La verdad la teoría la conozco, por lo menos lo básico y en que casos usar estos async, pero no sabia muy bien como implementarlo en .net o como funciona. Tuve que implementar un Quartz y estuve 1 semana aprox para hacerlo y entendia apenas lo que estaba haciendo. Con este video entendi y ahora sé como mejorar el desarrollo que hice. Explicas muy bien lo que aprendiendo solo te puede tomar hasta el quintuple de tiempo. Ahora voy de camino por las buenas practicas, pero tu canal me va ayudar muchisimo. Saludos
¡MUY CLARO! Muchas gracias. Enhorabuena Maestro. ✌😃
Gracias profe. Estaba ejecutando un Process que me guardaba un archivo .pfx en una carpeta y en la siguiente linea inmediatamente buscaba el archivo para obtenerlo, pero al parecer cuando lo buscaba no existía, con esto me di cuenta que tenia que esperar hasta que el proceso terminara de crear el archivo asíncronamente para después hacer uso del archivo
Muy buena explicacion, y muy necesaria. Gracias
Mejor imposible Héctor sos un genioooooooooooooooooooooo.
Buena explicación, bro. Saludos
No se si ya tienes videos de Task chaining, el manejo de los token para detener las task y muchas otras funciones que también aplican. Esto es parte importante del desarrollo backend.
Task abrón!
tus videos me gustan mucho, he visto varios y abordas inquietudes sobre c# que otros sitios no lo hacen, como este. ojala sigas subiendo cosas, saludos
muy claro el ejemplo. ¿podrias extenderte en la diferencia entre usar task vs thread? con est no logro ver cual es la ganancia de usar uno u otro. gracias
Hola ! Pasaba a dejarte un comentario agradeciéndote por todos los videos tuyos y lo bien explicado de tu contenido, me estas ayudando mucho a entender cosas que tengo que hacer en mi dia a dia! Gracias y saludos desde Argentina ❤
Claro y directo, Gracias amigo!
Muy buena la explicación!
Excelente vídeo! muy necesario... Gracias!
excelente explicación, saludos ✌
Héctor, saludos desde Colombia. Muy buenos los videos.
Gracias bro! Excelente video!
Entendible explicación!
Excelente explicacion.
Excelente! Super claro. Muchas gracias.
Buenisimo el video Hector! Muchas gracias!
Excelente video. Estoy ingresando en el mundo de asincronismo y este video ha sido de mucha ayuda para seguir aprendiendo estos temas.
Puedes hacer uno especificando las funciones y del diccionary, soy fiel seguidor Hector gracias
Muy buen video, estaría padre ver luego una serie de vídeos con task o uno que compare task con thread.
Excelente video, tus seguidores te pedimos más ejemplos de async await y Windows form. Con ejemplos de casos reales 🙏🙏. Gracias ayudas a muchos. Te amamos Hector
Excelente tus videos Héctor.
Cuánto tiempo te llevó aprender todo lo que sabes?
Muy buen video, podrías hacer uno de manejo de logs con task.
Quiza
muchas gracias por la explicación, por favor sería bueno una lista de curiosidades así, cosas simples pero muy útiles y poco conocidas, al menos para mi.
Excelente explicación Héctor! Este es uno de los temas que más me costó aprender, esta explicación me hubiera salvado de muchas en la universidad 😅
Hola como andas?? Excelente explicación, muy bueno
Video super duro!! Gracias!
Está muy chido, estaría interesante que hicieras un ejemplo de asíncronia con consultas a bases de datos
ua-cam.com/video/6pNvTvKJPTQ/v-deo.html
excelente videooo, una duda con esto puedo aplicarlo al llamr un job y esperar a que termine , mi duda es si en los milisegundos tengo que poner el tiempo que puede tardar el job en ejecutar
Muy bueno amigo gracias
Gracias
Excelente video!
Gracias, solo que me quedo la duda entre Task y Thread, porque pareciera que funcionan de manera similar, aunque imagino que Thread trabaja de diferente forma
muy buenos tus videos hector,, agarrando cosas puntuales.
Un dia podrias hacer como generar un setup con click one. para q los nuevos sepan como publicar sus proyectos de winforms
Quiza si
sos un groso explicando !! gracias papu :*
Gracias Hector :D
buena explicación crack!
Gracias por el video muy bueno
Hola, buen video, una consulta, cuando se pone 'await' quiere decir que un hilo queda esperando a que se termine la tarea , pero los demas hilos del procesador siguen ejecutanto otras tareas?
Excelente y claro que agradecería más vídeos de hilos.
Bien explicado.
Muy bueno el video!
Buen vídeo y muy bn explicado . Grax :)
buenisimo el video
buenísisisimo, gracias!!!
Man, aviéntate un video donde uses eso de theads pool, donde se puedan lanzar tantos procesos como permita el SO y conforme se vaya liberando/terminando un proceso en corto iniciar otro. El contexto para que me gustaría ocuparlo es para crear un servicio de windows que convierta videos de un formato a otro con ffmpeg, actualmente mi proceso solo convierte un video a la vez pero tarda un friego y son chorro de videos que se generan día a día y quisiera ajustar la aplicación para realizar varios procesos de conversión en paralelo. Saludos!
Muy bien video, necesitaba algo asi 👌
Papaaaaa, sos un groso!! me solucionaste una torta de problemas :3
Gracias !!! Que grande
Excelente contenido
gracias.
Hola excelente tu video, quizas podrias guiarme estoy tratando de llenar dos grids en una misma pantalla pero quiero q sea async, es decir el un grid lo consulto desde mi base y es rapido, pero el segundo es desde un WS externo, entonces tengo el problema que al consultar un dato el grid desde mi base demora lo mismo que el grid desde el WS, por eso quiisera hacerlo asincrono, por fa como lo podria hacer, gracias
Grande el power de leon
Una duda. Si tengo que lanzar un conjunto de consultas a la bd que no tienen relación entre ellas pero a posteriori ese conjunto de resultados me va a servir para mostrar un dash en ese caso podria usar task con cada query no? y deberia hacer el await de todos los task. Si tengo consultas dependientes, es decir si la consulta n se debe ejecutar con algun valor de n-1 no tiene sentido usar task cierto?
Wow q tal explicación y con cucharita, gracias!!!!!