WEBVTT

00:00:00.000 --> 00:00:02.910
>> Ei, amigos. Estavam de volta
com meu bom amigo Dean

00:00:02.910 --> 00:00:05.760
falando em avançado
Async Await, então sintonize.

00:00:05.760 --> 00:00:12.810
[MÚSICA]

00:00:12.810 --> 00:00:14.925
>> Bem-vindo de volta a todos
para o Show xamarin.

00:00:14.925 --> 00:00:16.110
Sou seu apresentador James Montemagno.

00:00:16.110 --> 00:00:18.570
Hoje, de volta para o segundo
tempo meu bom amigo

00:00:18.570 --> 00:00:21.540
Dean em falar sobre Async
Aguardam. Como está indo, Dean?

00:00:21.540 --> 00:00:22.380
>> Bom. Como está?

00:00:22.380 --> 00:00:24.030
>> Estou fazendo absolutamente fantástico.

00:00:24.030 --> 00:00:26.100
Agora, no primeiro episódio,

00:00:26.100 --> 00:00:29.610
você mostrou o uso básico
casos de Async Aguardam,

00:00:29.610 --> 00:00:31.665
o que está errado, o que é bom.

00:00:31.665 --> 00:00:33.150
O que você tem reservado para nós hoje?

00:00:33.150 --> 00:00:34.200
>> Então desta vez,

00:00:34.200 --> 00:00:35.700
Estamos indo para cenários avançados.

00:00:35.700 --> 00:00:37.290
Um monte de casos de borda.

00:00:37.290 --> 00:00:39.780
Cenários avançados usando
diferentes mecanismos

00:00:39.780 --> 00:00:41.610
dentro do TPL e indo fundo.

00:00:41.610 --> 00:00:43.440
>> Muito impressionante. Fresco. Eu adoro.

00:00:43.440 --> 00:00:45.840
Bem, não vamos perder tempo algum.
e vamos entrar nos códigos.

00:00:45.840 --> 00:00:47.565
>> Vamos direto a isso. Está bem.

00:00:47.565 --> 00:00:50.295
Para o último este é o mais,

00:00:50.295 --> 00:00:51.750
Não quero dizer complicado.

00:00:51.750 --> 00:00:53.640
mas um caso muito grande borda.

00:00:53.640 --> 00:00:54.165
>> Tudo bem.

00:00:54.165 --> 00:00:57.225
>> Então, o que isso é longo prazo
Tarefas. Então você é familiar?

00:00:57.225 --> 00:00:58.035
>> Eu sou.

00:00:58.035 --> 00:01:00.260
>> Tarefas de longa duração em

00:01:00.260 --> 00:01:02.960
o TPL são tarefas que
pode ser executado por um longo tempo.

00:01:02.960 --> 00:01:04.850
Às vezes, você só
quero que algo corra.

00:01:04.850 --> 00:01:09.470
Talvez esteja puxando, talvez seja
verificando seus valores de acelerômetro,

00:01:09.470 --> 00:01:10.880
algo assim,
correndo em segundo plano.

00:01:10.880 --> 00:01:12.745
Você realmente não quer parar com isso.

00:01:12.745 --> 00:01:15.360
Então, em um caso ruim,

00:01:15.360 --> 00:01:17.220
no meu mau exemplo aqui,

00:01:17.220 --> 00:01:19.190
Vou começar.

00:01:19.190 --> 00:01:23.285
umas 100 tarefas que são
impressão de pontiós a cada segundo.

00:01:23.285 --> 00:01:24.350
>> Isso faz sentido.

00:01:24.350 --> 00:01:25.805
>> Eles vão estar correndo.

00:01:25.805 --> 00:01:28.410
Fogo e esquecer, esquecer
eles, e eles só vão correr.

00:01:28.410 --> 00:01:30.210
>> O Estúdio Visual está até gritando com você.

00:01:30.210 --> 00:01:33.060
>> Exatamente. O Visual
O estúdio é mais esperto que eu.

00:01:33.060 --> 00:01:36.020
Então, além disso,

00:01:36.020 --> 00:01:38.500
Vou fazer 100 tarefas.
que realmente completo.

00:01:38.500 --> 00:01:39.240
>> Ok.

00:01:39.240 --> 00:01:40.550
>> Então vamos ver o que
Acontece com estes.

00:01:40.550 --> 00:01:43.310
Portanto, essas tarefas são as
tarefas que em seu aplicativo,

00:01:43.310 --> 00:01:44.660
você realmente quer correr,

00:01:44.660 --> 00:01:46.400
talvez você esteja baixando HTML,

00:01:46.400 --> 00:01:48.920
download de imagens,
fazer coisas assim.

00:01:48.920 --> 00:01:50.810
Está bem. Então aqui está um mau exemplo.

00:01:50.810 --> 00:01:54.920
Estamos executando 100 tarefas
que imprimir os pontões a cada segundo.

00:01:54.920 --> 00:01:57.575
Então, cada um destes
tarefas é imprimir um pontão.

00:01:57.575 --> 00:01:59.705
A cada segundo,
É disparar esquecer.

00:01:59.705 --> 00:02:02.374
Então, estamos começando
umas outras 100 tarefas

00:02:02.374 --> 00:02:04.975
quais são os testes que
Na verdade, queremos fugir.

00:02:04.975 --> 00:02:07.160
>> Eu vejo. Então, o que estamos vendo
na saída aqui, então?

00:02:07.160 --> 00:02:08.240
>> Então, na saída aqui,

00:02:08.240 --> 00:02:10.370
vamos ver que um monte

00:02:10.370 --> 00:02:12.350
de tópicos estão começando
da piscina de fios.

00:02:12.350 --> 00:02:15.545
Esta is.NET gestão
nossos tópicos para nós.

00:02:15.545 --> 00:02:16.040
>> Ok. Peguei.

00:02:16.040 --> 00:02:20.285
>> Já falámos de antes. Assim como
Você pode ver, é muito lento.

00:02:20.285 --> 00:02:23.090
Não há peso em
entre estes dois.

00:02:23.090 --> 00:02:26.725
Assim, o segundo lote de um 100
as tarefas já devem estar em execução.

00:02:26.725 --> 00:02:29.940
Mas, porque estes são tão insistentes,

00:02:29.940 --> 00:02:32.630
eles estão executando todos os
segundo para 100 tarefas.

00:02:32.630 --> 00:02:35.120
É realmente uma tomada
um tempo para girar para cima.

00:02:35.120 --> 00:02:38.150
Então, vamos ver uma vez que o segmento
piscina alcança aqui.

00:02:38.150 --> 00:02:41.380
Devemos começar a ver estes
testes disparando. Lá vamos nós.

00:02:41.380 --> 00:02:42.130
>> Lá vamos nós.

00:02:42.130 --> 00:02:43.340
>> Então estas são as tarefas que nós

00:02:43.340 --> 00:02:45.275
quer e eles são
correndo até a conclusão.

00:02:45.275 --> 00:02:46.610
Mas, no meio, você verá isso

00:02:46.610 --> 00:02:50.205
o fogo tarefa anterior e esquecer
ainda estão imprimindo seus pontimodos.

00:02:50.205 --> 00:02:53.280
>> Eu vejo. Tenho você. Então
tudo é tudo.

00:02:53.280 --> 00:02:56.655
Além disso, vemos esta coleta de lixo
enlouquecendo um pouco.

00:02:56.655 --> 00:02:57.840
Não está muito feliz conosco, sim.

00:02:57.840 --> 00:03:02.300
>> Não. Isso não é muito
incomum para ser honesto.

00:03:02.300 --> 00:03:05.090
Já vimos casos nisso.
onde está a piscina de fios

00:03:05.090 --> 00:03:08.225
apenas sufocado e sem tarefas
pode começar por minutos.

00:03:08.225 --> 00:03:10.970
Às vezes, se você usá-lo incorretamente,

00:03:10.970 --> 00:03:12.320
pode ficar preso.

00:03:12.320 --> 00:03:14.045
>> Tenho você. Então, como eu conserto isso?

00:03:14.045 --> 00:03:16.070
>> Então vamos reiniciar

00:03:16.070 --> 00:03:18.215
o aplicativo para se certificar de que
essas tarefas estão mortas.

00:03:18.215 --> 00:03:19.550
>> Tenho você.

00:03:19.550 --> 00:03:21.545
>> Então, vamos para a correção.

00:03:21.545 --> 00:03:21.995
>> Claro.

00:03:21.995 --> 00:03:25.340
>> Então, nós temos o
ferramentas para fazer isso.

00:03:25.340 --> 00:03:27.965
Podemos ter um monte de muito tempo
correndo em segundo plano,

00:03:27.965 --> 00:03:31.610
mas o que precisamos fazer é
use Task.Factory.StartNew.

00:03:31.610 --> 00:03:34.055
Este código dentro é o mesmo.

00:03:34.055 --> 00:03:35.960
Só estamos imprimindo esses pontões.

00:03:35.960 --> 00:03:39.420
Mas então, no parâmetro
para opções de criação,

00:03:39.420 --> 00:03:42.135
você precisa adicionar
TaskCreationOptions.Longrunning.

00:03:42.135 --> 00:03:45.945
>> Eu vejo. Então isso é algo
fábrica de tarefas to.NET.

00:03:45.945 --> 00:03:48.570
Qual é a diferença
entre esta Task.Start

00:03:48.570 --> 00:03:50.460
e fábrica de tarefas?
Comece aqui, eu acho.

00:03:50.460 --> 00:03:52.110
>> Então Tasks.Run é realmente

00:03:52.110 --> 00:03:56.430
Task.Factory.StartNew com Task.Factory.StartNew com Task.Factory.StartNew com
os parâmetros padrão.

00:03:56.430 --> 00:03:57.915
É um atalho para nós.

00:03:57.915 --> 00:03:58.440
>> Tenho você.

00:03:58.440 --> 00:04:01.100
>> Então Task.Factory.StartNew
é mais refinado.

00:04:01.100 --> 00:04:02.180
Temos um monte de parâmetros.

00:04:02.180 --> 00:04:03.695
Eu adicionei o link para a referência.

00:04:03.695 --> 00:04:04.955
>> Bonito.

00:04:04.955 --> 00:04:08.180
>> Há muito mais
do que podemos nos encaixar lá.

00:04:08.180 --> 00:04:11.785
Mas, basicamente, quando nos propusemos
uma tarefa tão longa,

00:04:11.785 --> 00:04:15.695
tem um fio separado
piscina que é inteligente sobre

00:04:15.695 --> 00:04:19.655
e ele vai ser capaz de oversubscribe.

00:04:19.655 --> 00:04:23.510
Você pode ler a documentação.
Então, vamos dar uma olhada.

00:04:23.510 --> 00:04:26.500
Esta é a única mudança,
Task.Factory.StartNew.

00:04:26.500 --> 00:04:30.540
Então vamos ver, estes são os
100 tarefas que imprimem os pontões.

00:04:30.540 --> 00:04:33.420
Nossas outras tarefas já estão começando.

00:04:33.420 --> 00:04:34.185
>> Sim.

00:04:34.185 --> 00:04:36.465
>> Sem mais ou menos. Nós
Nem preciso esperar.

00:04:36.465 --> 00:04:38.580
>> Então, anteriormente, nós
na verdade, tinha uma bolacha.

00:04:38.580 --> 00:04:41.100
Um monte deles, tudo o que recebem
Agendada. Tudo aconteceu.

00:04:41.100 --> 00:04:44.945
Então, agora, estamos realmente vendo
coisas funcionam como esperado.

00:04:44.945 --> 00:04:46.985
Desde o início,

00:04:46.985 --> 00:04:49.590
todas as tarefas foram todas
funcionando simultaneamente.

00:04:49.590 --> 00:04:50.220
>> Exatamente.

00:04:50.220 --> 00:04:52.025
>> A longa duração é
ainda continuando.

00:04:52.025 --> 00:04:55.310
Você já completou isso.
100 tarefas onde antes de nos sentarmos

00:04:55.310 --> 00:04:58.565
para o que como 20 segundos
esperando por isso. Isso é uma loucura.

00:04:58.565 --> 00:04:58.790
>> Sim.

00:04:58.790 --> 00:04:59.480
>> Muito legal.

00:04:59.480 --> 00:05:00.305
>> É insano.

00:05:00.305 --> 00:05:02.115
>> Bem, Dean, isso é incrível.

00:05:02.115 --> 00:05:04.800
Apenas muito conteúdo grande
Apenas embalado em direito ali.

00:05:04.800 --> 00:05:05.160
>> Obrigado, James.

00:05:05.160 --> 00:05:07.550
>> Agora, é claro, vamos colocar
todos os links para o show em

00:05:07.550 --> 00:05:10.490
as notas do show abaixo para
todas as melhores práticas,

00:05:10.490 --> 00:05:12.545
documentação, este
código de amostra, tudo.

00:05:12.545 --> 00:05:17.030
Você também pode ir para
aka.MS/xamarinbestpractices

00:05:17.030 --> 00:05:19.310
para saber mais sobre todos
das melhores práticas em

00:05:19.310 --> 00:05:21.820
Xamarin para o CAT móvel
Equipe que é super incrível.

00:05:21.820 --> 00:05:23.695
Dean, muito obrigado
por mostrar tudo isso.

00:05:23.695 --> 00:05:24.850
>> Obrigado por ter
eu no programa, James.

00:05:24.850 --> 00:05:26.675
>> Absolutamente. Saúde. Certificar-se

00:05:26.675 --> 00:05:28.925
você segue o Xamarin
Show no YouTube,

00:05:28.925 --> 00:05:30.425
Canal Nove. Você sabe para onde ir.

00:05:30.425 --> 00:05:31.850
Bata o sino de notificação,

00:05:31.850 --> 00:05:33.725
tornar-se parte do
esquadrão de notificação.

00:05:33.725 --> 00:05:35.390
Eu sou James Montemagno Isto é

00:05:35.390 --> 00:05:38.550
O Xamarin Show, e
obrigado por assistir.

00:05:45.230 --> 00:05:48.050
>> Ei, James aqui.
Só queria fazer o check-in.

00:05:48.050 --> 00:05:50.105
e obrigado por
assistindo a este vídeo.

00:05:50.105 --> 00:05:53.195
Agora, faça todas as coisas que você
sabe que você quer fazer como,

00:05:53.195 --> 00:05:55.760
se inscrever, e ding
que sino de notificação,

00:05:55.760 --> 00:05:57.770
tornar-se parte do
esquadrão de notificação.

00:05:57.770 --> 00:05:59.150
Enquanto estiver aqui, confira

00:05:59.150 --> 00:06:02.360
todos esses vídeos incríveis
que eu já gravei.

00:06:02.360 --> 00:06:05.970
Clique nessa coisa. Clique
É isso. Cuidado com isso. Faça isso.

