WEBVTT

00:00:00.000 --> 00:00:02.910
>> Hola, amigos. Volvió
con mi buen amigo Dean

00:00:02.910 --> 00:00:05.760
hablando en avanzado
Async Await, así que sintoniza.

00:00:05.760 --> 00:00:12.810
[MUSICA]

00:00:12.810 --> 00:00:14.925
>> Bienvenidos de nuevo a todos
a Xamarin Show.

00:00:14.925 --> 00:00:16.110
Soy su anfitrión James Montemagno.

00:00:16.110 --> 00:00:18.570
Hoy, de vuelta para el segundo
tiempo mi buen amigo

00:00:18.570 --> 00:00:21.540
Dean al hablar de Async
Esperan. ¿Cómo te va, Dean?

00:00:21.540 --> 00:00:22.380
>> Bien. ¿Cómo estás?

00:00:22.380 --> 00:00:24.030
>> Lo estoy haciendo absolutamente fantástico.

00:00:24.030 --> 00:00:26.100
Ahora, en el primer episodio,

00:00:26.100 --> 00:00:29.610
que mostró el uso básico
casos de Async Await,

00:00:29.610 --> 00:00:31.665
lo que está mal, lo que es bueno.

00:00:31.665 --> 00:00:33.150
¿Qué nos espera hoy?

00:00:33.150 --> 00:00:34.200
>> Así que esta vez,

00:00:34.200 --> 00:00:35.700
vamos por escenarios avanzados.

00:00:35.700 --> 00:00:37.290
Un montón de casos de borde.

00:00:37.290 --> 00:00:39.780
Escenarios avanzados usando
diferentes mecanismos

00:00:39.780 --> 00:00:41.610
dentro de la TPL y profundizando.

00:00:41.610 --> 00:00:43.440
>> Muy impresionante. Fresco. Me encanta.

00:00:43.440 --> 00:00:45.840
Bueno, no perdamos tiempo en absoluto.
y vamos a entrar en los códigos.

00:00:45.840 --> 00:00:47.565
>> Vamos directo a ello. Muy bien.

00:00:47.565 --> 00:00:50.295
Para el último esto es lo más,

00:00:50.295 --> 00:00:51.750
No quiero decir complicado,

00:00:51.750 --> 00:00:53.640
pero un caso de borde muy grande.

00:00:53.640 --> 00:00:54.165
>> Muy bien.

00:00:54.165 --> 00:00:57.225
>> Así que lo que esto es de larga duración
Tareas. ¿Así que te resultas familiar?

00:00:57.225 --> 00:00:58.035
>> Lo soy.

00:00:58.035 --> 00:01:00.260
>> Tareas de larga duración en

00:01:00.260 --> 00:01:02.960
la TPL son tareas que
puede funcionar durante mucho tiempo.

00:01:02.960 --> 00:01:04.850
A veces,
quiero que algo funcione.

00:01:04.850 --> 00:01:09.470
Tal vez está tirando, tal vez es
revisando los valores del acelerómetro,

00:01:09.470 --> 00:01:10.880
Algo así
corriendo en segundo plano.

00:01:10.880 --> 00:01:12.745
Realmente no quieres detenerlo.

00:01:12.745 --> 00:01:15.360
Así que en un mal caso,

00:01:15.360 --> 00:01:17.220
en mi mal ejemplo aquí,

00:01:17.220 --> 00:01:19.190
Voy a empezar

00:01:19.190 --> 00:01:23.285
100 tareas que son
puntos de impresión cada segundo.

00:01:23.285 --> 00:01:24.350
>> Eso tiene sentido.

00:01:24.350 --> 00:01:25.805
>> Sólo van a estar corriendo.

00:01:25.805 --> 00:01:28.410
Fuego y olvídate, olvídate
ellos, y sólo van a correr.

00:01:28.410 --> 00:01:30.210
>> Visual Studio incluso te está gritando.

00:01:30.210 --> 00:01:33.060
>> Exactamente. The Visual
El estudio es más inteligente que yo.

00:01:33.060 --> 00:01:36.020
Entonces, además de eso,

00:01:36.020 --> 00:01:38.500
Voy a ejecutar 100 tareas
que realmente completa.

00:01:38.500 --> 00:01:39.240
>> Está bien.

00:01:39.240 --> 00:01:40.550
>> Así que vamos a ver lo que
esto les pasa.

00:01:40.550 --> 00:01:43.310
Así que estas tareas son el
tareas que en la aplicación,

00:01:43.310 --> 00:01:44.660
en realidad quieres correr,

00:01:44.660 --> 00:01:46.400
tal vez estás descargando HTML,

00:01:46.400 --> 00:01:48.920
descargando imágenes,
haciendo cosas así.

00:01:48.920 --> 00:01:50.810
Muy bien. Así que aquí hay un mal ejemplo.

00:01:50.810 --> 00:01:54.920
Estamos ejecutando 100 tareas
que imprimen puntos cada segundo.

00:01:54.920 --> 00:01:57.575
Así que cada uno de estos
tareas es imprimir un punto.

00:01:57.575 --> 00:01:59.705
Cada segundo,
está disparando olvidar.

00:01:59.705 --> 00:02:02.374
Entonces, estamos empezando
otras 100 tareas

00:02:02.374 --> 00:02:04.975
que son las pruebas que
en realidad queremos correr.

00:02:04.975 --> 00:02:07.160
>> Ya veo. Entonces, ¿qué estamos viendo
en la salida aquí entonces?

00:02:07.160 --> 00:02:08.240
>> Así que en la salida aquí,

00:02:08.240 --> 00:02:10.370
vamos a ver que un montón

00:02:10.370 --> 00:02:12.350
de hilos están empezando
del grupo de subprocesos.

00:02:12.350 --> 00:02:15.545
Esto is.NET gestionando
nuestros hilos para nosotros.

00:02:15.545 --> 00:02:16.040
>> Está bien. Entiendo.

00:02:16.040 --> 00:02:20.285
>> Hablamos de antes. Así como
se puede ver, es muy lento.

00:02:20.285 --> 00:02:23.090
No hay peso en
entre estos dos.

00:02:23.090 --> 00:02:26.725
Así que el segundo lote de un 100
tareas ya deberían estar en ejecución.

00:02:26.725 --> 00:02:29.940
Pero, como estos son tan insistentes,

00:02:29.940 --> 00:02:32.630
que están corriendo cada
segundo para 100 tareas.

00:02:32.630 --> 00:02:35.120
Realmente está tomando
un tiempo para girar.

00:02:35.120 --> 00:02:38.150
Así que vamos a ver una vez que el hilo
piscina se levanta aquí.

00:02:38.150 --> 00:02:41.380
Deberíamos empezar a ver estos
pruebas disparando. Aquí vamos.

00:02:41.380 --> 00:02:42.130
>> Ahí vamos.

00:02:42.130 --> 00:02:43.340
>> Así que estas son las tareas que

00:02:43.340 --> 00:02:45.275
quieren y son
corriendo hasta su finalización.

00:02:45.275 --> 00:02:46.610
Pero, en el medio, verás que

00:02:46.610 --> 00:02:50.205
la tarea anterior fuego y olvidar
todavía están imprimiendo sus puntos.

00:02:50.205 --> 00:02:53.280
>> Ya veo. Te tengo. así que
todo es todo.

00:02:53.280 --> 00:02:56.655
Además, vemos esta recolección de basura
enloqueciendo un poco.

00:02:56.655 --> 00:02:57.840
No está muy contento con nosotros, sí.

00:02:57.840 --> 00:03:02.300
>> No. Esto no es demasiado
poco común para ser honesto.

00:03:02.300 --> 00:03:05.090
Hemos visto casos en este
donde se encuentra el grupo de subprocesos

00:03:05.090 --> 00:03:08.225
simplemente se asfixió y no hay tareas
puede comenzar por minutos.

00:03:08.225 --> 00:03:10.970
A veces, si lo usas incorrectamente,

00:03:10.970 --> 00:03:12.320
puede atascarse.

00:03:12.320 --> 00:03:14.045
>> Te tengo. Entonces, ¿cómo puedo arreglar esto?

00:03:14.045 --> 00:03:16.070
>> Así que vamos a reiniciar

00:03:16.070 --> 00:03:18.215
la aplicación para asegurarse de que
esas tareas están muertas.

00:03:18.215 --> 00:03:19.550
>> Te tengo.

00:03:19.550 --> 00:03:21.545
>> Entonces, iremos a la solución.

00:03:21.545 --> 00:03:21.995
>> Claro.

00:03:21.995 --> 00:03:25.340
>> Así que tenemos el
herramientas para hacer esto.

00:03:25.340 --> 00:03:27.965
Podemos tener un montón de largo
corriendo en segundo plano,

00:03:27.965 --> 00:03:31.610
pero lo que tenemos que hacer es
use Task.Factory.StartNew.

00:03:31.610 --> 00:03:34.055
Este código dentro es el mismo.

00:03:34.055 --> 00:03:35.960
Sólo estamos imprimiendo esos puntos.

00:03:35.960 --> 00:03:39.420
Pero entonces, en el parámetro
para opciones de creación,

00:03:39.420 --> 00:03:42.135
es necesario añadir
TaskCreationOptions.Longrunning.

00:03:42.135 --> 00:03:45.945
>> Ya veo. Así que esto es algo
fábrica de tareas de to.NET integrada.

00:03:45.945 --> 00:03:48.570
¿Cuál es la diferencia
entre este Task.Start

00:03:48.570 --> 00:03:50.460
y la fábrica de tareas?
Empieza aquí, supongo.

00:03:50.460 --> 00:03:52.110
>> Así que Tasks.Run es en realidad

00:03:52.110 --> 00:03:56.430
Task.Factory.StartNew con
los parámetros predeterminados.

00:03:56.430 --> 00:03:57.915
Es un atajo para nosotros.

00:03:57.915 --> 00:03:58.440
>> Te tengo.

00:03:58.440 --> 00:04:01.100
>> So Task.Factory.StartNew
es más de grano fino.

00:04:01.100 --> 00:04:02.180
Tenemos un montón de parámetros.

00:04:02.180 --> 00:04:03.695
Agregué el enlace a la referencia.

00:04:03.695 --> 00:04:04.955
>> Hermoso.

00:04:04.955 --> 00:04:08.180
>> Hay mucho más
de lo que podemos encajar allí.

00:04:08.180 --> 00:04:11.785
Pero, básicamente, cuando establecemos
una tarea tan larga,

00:04:11.785 --> 00:04:15.695
tiene un hilo separado
piscina que es inteligente acerca de

00:04:15.695 --> 00:04:19.655
y será capaz de sobresuscribirse.

00:04:19.655 --> 00:04:23.510
Puede leer la documentación.
Así que echemos un vistazo.

00:04:23.510 --> 00:04:26.500
Este es el único cambio,
Task.Factory.StartNew.

00:04:26.500 --> 00:04:30.540
Así que vamos a ver, estos son los
100 tareas que imprimen puntos.

00:04:30.540 --> 00:04:33.420
Nuestras otras tareas ya están empezando.

00:04:33.420 --> 00:04:34.185
>> Sí.

00:04:34.185 --> 00:04:36.465
>> Así de tal. Nosotros
ni siquiera tenía que esperar.

00:04:36.465 --> 00:04:38.580
>> Así que anteriormente,
en realidad tenía una oblea.

00:04:38.580 --> 00:04:41.100
Un montón de ellos, todo lo que consiguen
Programado. Todo sucedió.

00:04:41.100 --> 00:04:44.945
Así que ahora, en realidad estamos viendo
las cosas funcionan como se esperaba.

00:04:44.945 --> 00:04:46.985
Desde el principio,

00:04:46.985 --> 00:04:49.590
todas las tareas eran todas
se ejecuta simultáneamente.

00:04:49.590 --> 00:04:50.220
>> Exactamente.

00:04:50.220 --> 00:04:52.025
>> El largo plazo es
continuando.

00:04:52.025 --> 00:04:55.310
Ya has completado esos
100 tareas donde antes nos sentamos

00:04:55.310 --> 00:04:58.565
para lo que como 20 segundos
esperándolo. Es una locura.

00:04:58.565 --> 00:04:58.790
>> Sí.

00:04:58.790 --> 00:04:59.480
>> Muy guay.

00:04:59.480 --> 00:05:00.305
>> Es una locura.

00:05:00.305 --> 00:05:02.115
>> Bueno, Dean, esto es increíble.

00:05:02.115 --> 00:05:04.800
Sólo tanto gran contenido
acaba de empacar justo allí.

00:05:04.800 --> 00:05:05.160
>> Gracias, James.

00:05:05.160 --> 00:05:07.550
>> Ahora, por supuesto, vamos a poner
todos los enlaces al espectáculo en

00:05:07.550 --> 00:05:10.490
las notas de muestra a continuación para
todas las mejores prácticas,

00:05:10.490 --> 00:05:12.545
documentación, esta
código de muestra, todo.

00:05:12.545 --> 00:05:17.030
También puede ir a
aka.MS/xamarinbestpractices

00:05:17.030 --> 00:05:19.310
para obtener más información sobre todos los
de las mejores prácticas en

00:05:19.310 --> 00:05:21.820
Xamarin para el CAT móvil
Equipo que es super impresionante.

00:05:21.820 --> 00:05:23.695
Dean, muchas gracias.
por mostrar todo esto.

00:05:23.695 --> 00:05:24.850
>> Gracias por tener
yo en el programa, James.

00:05:24.850 --> 00:05:26.675
>> Absolutamente. Salud. Asegúrate

00:05:26.675 --> 00:05:28.925
sigue el Xamarin
Mostrar en YouTube,

00:05:28.925 --> 00:05:30.425
Canal Nueve. Sabes adónde ir.

00:05:30.425 --> 00:05:31.850
Golpea esa campana de notificación,

00:05:31.850 --> 00:05:33.725
formar parte de la
escuadrón de notificaciones.

00:05:33.725 --> 00:05:35.390
Soy James Montemagno Esto es

00:05:35.390 --> 00:05:38.550
Xamarin Show, y
gracias por mirar.

00:05:45.230 --> 00:05:48.050
>> Hola, James.
Sólo quería registrarme

00:05:48.050 --> 00:05:50.105
y gracias por
viendo este video.

00:05:50.105 --> 00:05:53.195
Ahora, haz todas las cosas que
sabe que quieres hacer como,

00:05:53.195 --> 00:05:55.760
suscribirse, y ding
que la campana de notificación,

00:05:55.760 --> 00:05:57.770
formar parte de la
escuadrón de notificaciones.

00:05:57.770 --> 00:05:59.150
Mientras estés aquí, echa un vistazo

00:05:59.150 --> 00:06:02.360
todos estos videos impresionantes
que ya he grabado.

00:06:02.360 --> 00:06:05.970
Haz clic en esa cosa. Haga clic
eso. Cuidado. Hazlo.

