WEBVTT

00:00:00.000 --> 00:00:02.910
>> Ehi, amici. Sono tornati
con il mio buon amico Dean

00:00:02.910 --> 00:00:05.760
parlando in avanzato
Async Await, in modo da sintonizzarsi.

00:00:05.760 --> 00:00:12.810
[MUSICA]

00:00:12.810 --> 00:00:14.925
>> Bentornato tutti
allo Show di Xamarin.

00:00:14.925 --> 00:00:16.110
Sono il vostro ospite James Montemagno.

00:00:16.110 --> 00:00:18.570
Oggi, di nuovo per il secondo
tempo il mio buon amico

00:00:18.570 --> 00:00:21.540
Dean a parlare di Async
Attendono. Come va, Dean?

00:00:21.540 --> 00:00:22.380
>> Buono. Come stai?

00:00:22.380 --> 00:00:24.030
>> Sto facendo assolutamente fantastico.

00:00:24.030 --> 00:00:26.100
Ora, nel primo episodio,

00:00:26.100 --> 00:00:29.610
hai mostrato l'uso di base
casi di Async Await,

00:00:29.610 --> 00:00:31.665
cosa c'è che non va, cosa c'è di buono.

00:00:31.665 --> 00:00:33.150
Cos'hai in serbo per noi oggi?

00:00:33.150 --> 00:00:34.200
>> Quindi questa volta,

00:00:34.200 --> 00:00:35.700
stiamo andando per scenari avanzati.

00:00:35.700 --> 00:00:37.290
Un mucchio di casi limite.

00:00:37.290 --> 00:00:39.780
Scenari avanzati che utilizzano
diversi meccanismi

00:00:39.780 --> 00:00:41.610
all'interno della TPL e andando in profondità.

00:00:41.610 --> 00:00:43.440
>> Molto impressionante. Bello. Mi piace un sacco.

00:00:43.440 --> 00:00:45.840
Beh, non perdiamo tempo
e entriamo nei codici.

00:00:45.840 --> 00:00:47.565
>> Andiamo a destra ad esso. Va bene.

00:00:47.565 --> 00:00:50.295
Per l'ultimo questo è il più,

00:00:50.295 --> 00:00:51.750
Non voglio dire complicato,

00:00:51.750 --> 00:00:53.640
ma un caso molto grande bordo.

00:00:53.640 --> 00:00:54.165
>> Va bene.

00:00:54.165 --> 00:00:57.225
>> Quindi, ciò che questo è a lungo in esecuzione
Attività. Quindi hai familiarità?

00:00:57.225 --> 00:00:58.035
>> Io sono.

00:00:58.035 --> 00:01:00.260
>> Così compiti a lungo termine in

00:01:00.260 --> 00:01:02.960
la TPL sono compiti che
può funzionare a lungo.

00:01:02.960 --> 00:01:04.850
A volte, basta
vogliono qualcosa da eseguire.

00:01:04.850 --> 00:01:09.470
Forse sta tirando, forse è
controllare i valori dell'accelerometro,

00:01:09.470 --> 00:01:10.880
Qualcosa del genere
in esecuzione in background.

00:01:10.880 --> 00:01:12.745
Non vuoi davvero fermarlo.

00:01:12.745 --> 00:01:15.360
Quindi, in un caso negativo,

00:01:15.360 --> 00:01:17.220
nel mio cattivo esempio qui,

00:01:17.220 --> 00:01:19.190
Ho intenzione di iniziare

00:01:19.190 --> 00:01:23.285
un 100 compiti che sono
stampa di punti ogni secondo.

00:01:23.285 --> 00:01:24.350
>> Ha senso.

00:01:24.350 --> 00:01:25.805
>> Stanno solo andando a essere in esecuzione.

00:01:25.805 --> 00:01:28.410
Fuoco e dimenticare, dimenticare
loro, e faranno solo correre.

00:01:28.410 --> 00:01:30.210
>> Visual Studio ti sta anche urlando.

00:01:30.210 --> 00:01:33.060
>> Esattamente. Il visivo
Studio è più intelligente di me.

00:01:33.060 --> 00:01:36.020
Poi, per di più,

00:01:36.020 --> 00:01:38.500
Ho intenzione di eseguire un 100 compiti
che in realtà completa.

00:01:38.500 --> 00:01:39.240
>> Ok.

00:01:39.240 --> 00:01:40.550
>> Quindi vedremo cosa
accade a questi.

00:01:40.550 --> 00:01:43.310
Quindi questi compiti sono i
attività che nell'app,

00:01:43.310 --> 00:01:44.660
si vuole effettivamente correre,

00:01:44.660 --> 00:01:46.400
forse stai scaricando HTML,

00:01:46.400 --> 00:01:48.920
il download di immagini,
fare cose del genere.

00:01:48.920 --> 00:01:50.810
Va bene. Ecco un cattivo esempio.

00:01:50.810 --> 00:01:54.920
Stiamo eseguendo 100 attività
che stampano punti ogni secondo.

00:01:54.920 --> 00:01:57.575
Quindi ognuno di questi
attività è la stampa di un punto.

00:01:57.575 --> 00:01:59.705
Ogni singolo secondo,
sta sparando dimenticare.

00:01:59.705 --> 00:02:02.374
Poi, stiamo iniziando
un 100 altre attività

00:02:02.374 --> 00:02:04.975
che sono i test che
in realtà vogliamo correre.

00:02:04.975 --> 00:02:07.160
>> Vedo. Quindi, cosa stiamo vedendo
nell'output qui allora?

00:02:07.160 --> 00:02:08.240
>> Quindi nell'output qui,

00:02:08.240 --> 00:02:10.370
vedremo che un gruppo

00:02:10.370 --> 00:02:12.350
di thread stanno iniziando
dal pool di thread.

00:02:12.350 --> 00:02:15.545
Questo is.NET la gestione
i nostri fili per noi.

00:02:15.545 --> 00:02:16.040
>> Ok. Capito.

00:02:16.040 --> 00:02:20.285
>> Abbiamo parlato prima. Quindi, come
si può vedere, è molto lento.

00:02:20.285 --> 00:02:23.090
Non c'è peso in
tra questi due.

00:02:23.090 --> 00:02:26.725
Quindi il secondo lotto di un 100
attività dovrebbero essere già in esecuzione.

00:02:26.725 --> 00:02:29.940
Ma, poiché questi sono così insistenti,

00:02:29.940 --> 00:02:32.630
stanno eseguendo ogni
secondo per 100 compiti.

00:02:32.630 --> 00:02:35.120
E 'davvero prendendo
un po 'per girare su.

00:02:35.120 --> 00:02:38.150
Quindi vedremo una volta il filo
piscina raggiunge qui.

00:02:38.150 --> 00:02:41.380
Dovremmo iniziare a vedere questi
test che si scatenano. Ecco fatto.

00:02:41.380 --> 00:02:42.130
>> Ci andiamo.

00:02:42.130 --> 00:02:43.340
>> Quindi questi sono i compiti che abbiamo

00:02:43.340 --> 00:02:45.275
vogliono e sono
in corso fino al completamento.

00:02:45.275 --> 00:02:46.610
Ma, nel mezzo, vedrete che

00:02:46.610 --> 00:02:50.205
il fuoco compito precedente e dimenticare
stanno ancora stampando i loro punti.

00:02:50.205 --> 00:02:53.280
>> Vedo. Ti ho preso. Così
tutto è tutto.

00:02:53.280 --> 00:02:56.655
Inoltre, vediamo questa garbage collection
impazzire un po' .

00:02:56.655 --> 00:02:57.840
Non è molto felice con noi, sì.

00:02:57.840 --> 00:03:02.300
>> No. Questo non è troppo
raro ad essere onesti.

00:03:02.300 --> 00:03:05.090
Abbiamo visto casi in questo
dove il pool di thread è

00:03:05.090 --> 00:03:08.225
appena soffocato e senza compiti
può iniziare per minuti.

00:03:08.225 --> 00:03:10.970
A volte, se lo si utilizza in modo non corretto,

00:03:10.970 --> 00:03:12.320
può incepparsi.

00:03:12.320 --> 00:03:14.045
>> Ti ho preso. Quindi, come posso risolvere questo problema?

00:03:14.045 --> 00:03:16.070
>> Quindi cerchiamo solo di riavviare

00:03:16.070 --> 00:03:18.215
l'applicazione per assicurarsi che
questi compiti sono morti.

00:03:18.215 --> 00:03:19.550
>> Ti ho preso.

00:03:19.550 --> 00:03:21.545
>> Poi, andremo alla correzione.

00:03:21.545 --> 00:03:21.995
>> Certo.

00:03:21.995 --> 00:03:25.340
>> Quindi abbiamo il
strumenti per fare questo.

00:03:25.340 --> 00:03:27.965
Possiamo avere un po'di
in esecuzione in background,

00:03:27.965 --> 00:03:31.610
ma quello che dobbiamo fare è
utilizzare Task.Factory.StartNew.

00:03:31.610 --> 00:03:34.055
Questo codice all'interno è lo stesso.

00:03:34.055 --> 00:03:35.960
Stiamo solo stampando quei puntini.

00:03:35.960 --> 00:03:39.420
Ma poi, nel parametro
per le opzioni di creazione,

00:03:39.420 --> 00:03:42.135
è necessario aggiungere
TaskCreationOptions.Longrunning.

00:03:42.135 --> 00:03:45.945
>> Vedo. Quindi questo è qualcosa
incorporato to.NET task factory.

00:03:45.945 --> 00:03:48.570
Qual è la differenza
tra questa attività.Start

00:03:48.570 --> 00:03:50.460
e task factory?
Comincia da qui, credo.

00:03:50.460 --> 00:03:52.110
>> Così Tasks.Run è in realtà

00:03:52.110 --> 00:03:56.430
Task.Factory.StartNew con
parametri predefiniti.

00:03:56.430 --> 00:03:57.915
È una scorciatoia per noi.

00:03:57.915 --> 00:03:58.440
>> Ti ho preso.

00:03:58.440 --> 00:04:01.100
>> Così Task.Factory.StartNew
è più fine-grained.

00:04:01.100 --> 00:04:02.180
Abbiamo un mucchio di parametri.

00:04:02.180 --> 00:04:03.695
Ho aggiunto il link al riferimento.

00:04:03.695 --> 00:04:04.955
>> Bella.

00:04:04.955 --> 00:04:08.180
>> C'è molto di più
di quanto possiamo stare lì dentro.

00:04:08.180 --> 00:04:11.785
Ma, fondamentalmente, quando abbiamo impostato
un'attività a lungo termine,

00:04:11.785 --> 00:04:15.695
ha un thread separato
piscina che è intelligente su

00:04:15.695 --> 00:04:19.655
e sarà in grado di sovrascrivere.

00:04:19.655 --> 00:04:23.510
È possibile leggere la documentazione.
Quindi diamo un'occhiata.

00:04:23.510 --> 00:04:26.500
Questo è l'unico cambiamento,
Task.Factory.StartNew.

00:04:26.500 --> 00:04:30.540
Quindi vedremo, questi sono i
100 attività che stampano punti.

00:04:30.540 --> 00:04:33.420
Gli altri compiti stanno già iniziando.

00:04:33.420 --> 00:04:34.185
>> sì.

00:04:34.185 --> 00:04:36.465
>> Proprio così. noi
non aveva nemmeno dovuto aspettare.

00:04:36.465 --> 00:04:38.580
>> Così in precedenza, abbiamo
in realtà aveva un wafer.

00:04:38.580 --> 00:04:41.100
Un mucchio di loro, tutto quello che ottengono
Programmato. È successo tutto.

00:04:41.100 --> 00:04:44.945
Così ora, stiamo effettivamente vedendo
le cose funzionano come previsto.

00:04:44.945 --> 00:04:46.985
Fin dall'inizio,

00:04:46.985 --> 00:04:49.590
tutti i compiti erano tutti
in esecuzione contemporaneamente.

00:04:49.590 --> 00:04:50.220
>> Esattamente.

00:04:50.220 --> 00:04:52.025
>> Il lungo in esecuzione è
continua a continuare.

00:04:52.025 --> 00:04:55.310
Li hai già completati
100 compiti dove prima ci siamo seduti

00:04:55.310 --> 00:04:58.565
per quanto riguarda 20 secondi
in attesa di esso. È pazzesco.

00:04:58.565 --> 00:04:58.790
>> sì.

00:04:58.790 --> 00:04:59.480
>> Molto fresco.

00:04:59.480 --> 00:05:00.305
>> È folle.

00:05:00.305 --> 00:05:02.115
>> Beh, Dean, questo è impressionante.

00:05:02.115 --> 00:05:04.800
Solo così tanto grande contenuto
appena imballato in proprio lì.

00:05:04.800 --> 00:05:05.160
>> Grazie, James.

00:05:05.160 --> 00:05:07.550
>> Ora, naturalmente, metteremo
tutti i link allo spettacolo in

00:05:07.550 --> 00:05:10.490
le note mostra qui sotto per
tutte le migliori pratiche,

00:05:10.490 --> 00:05:12.545
documentazione, questo
codice di esempio, tutto.

00:05:12.545 --> 00:05:17.030
Puoi anche andare a
aka.MS/xamarinbestpractices

00:05:17.030 --> 00:05:19.310
per saperne di più su tutti i
delle migliori pratiche in

00:05:19.310 --> 00:05:21.820
Xamarin per il CAT mobile
Squadra che è super impressionante.

00:05:21.820 --> 00:05:23.695
Dean, grazie mille
per mostrare tutto questo fuori.

00:05:23.695 --> 00:05:24.850
>> Grazie per aver
me nello show, James.

00:05:24.850 --> 00:05:26.675
>> Assolutamente. Cin cin!. Assicurarsi

00:05:26.675 --> 00:05:28.925
si segue il Xamarin
Show presso YouTube,

00:05:28.925 --> 00:05:30.425
Canale Nove. Sai dove andare.

00:05:30.425 --> 00:05:31.850
Colpisci quella campana di notifica,

00:05:31.850 --> 00:05:33.725
diventare parte del
squadra di notifica.

00:05:33.725 --> 00:05:35.390
Sono James Montemagno Questo è

00:05:35.390 --> 00:05:38.550
Lo spettacolo di Xamarin, e
Grazie per l'attenzione.

00:05:45.230 --> 00:05:48.050
>> Ehi, James qui.
Volevo solo fare il check-in

00:05:48.050 --> 00:05:50.105
e grazie per
guardando questo video.

00:05:50.105 --> 00:05:53.195
Ora, fare tutte le cose che si
so che si vuole fare come come,

00:05:53.195 --> 00:05:55.760
abbonarsi, e ding
quella campana di notifica,

00:05:55.760 --> 00:05:57.770
diventare parte del
squadra di notifica.

00:05:57.770 --> 00:05:59.150
Mentre sei qui, dai un'occhiata

00:05:59.150 --> 00:06:02.360
tutti questi video impressionante
che ho già registrato.

00:06:02.360 --> 00:06:05.970
Clicca su quella cosa. Fare clic su
esso. Attento. Fallo.

