WEBVTT

00:00:00.000 --> 00:00:02.910
>> Hey, Freunde. Waren zurück
mit meinem guten Freund Dean

00:00:02.910 --> 00:00:05.760
Sprechen in fortgeschrittenen
Async Await, also stimmen Sie ein.

00:00:05.760 --> 00:00:12.810
[MUSIK]

00:00:12.810 --> 00:00:14.925
>> Willkommen zurück alle
zur Xamarin Show.

00:00:14.925 --> 00:00:16.110
Ich bin dein Gastgeber James Montemagno.

00:00:16.110 --> 00:00:18.570
Heute, zurück zum zweiten
Zeit mein guter Freund

00:00:18.570 --> 00:00:21.540
Dean über Async
Erwarten. Wie geht es weiter, Dean?

00:00:21.540 --> 00:00:22.380
>> Gut. Wie geht es dir?

00:00:22.380 --> 00:00:24.030
>> Es geht mir absolut fantastisch.

00:00:24.030 --> 00:00:26.100
Jetzt, in der ersten Folge,

00:00:26.100 --> 00:00:29.610
Sie haben die Grundlegende Nutzung
Fälle von Async Await,

00:00:29.610 --> 00:00:31.665
was falsch ist, was gut ist.

00:00:31.665 --> 00:00:33.150
Was haben Sie heute für uns auf Lager?

00:00:33.150 --> 00:00:34.200
>> Diesmal also

00:00:34.200 --> 00:00:35.700
wir gehen für fortgeschrittene Szenarien.

00:00:35.700 --> 00:00:37.290
Eine Reihe von Randfällen.

00:00:37.290 --> 00:00:39.780
Erweiterte Szenarien mit
verschiedene Mechanismen

00:00:39.780 --> 00:00:41.610
innerhalb der TPL und in die Tiefe gehen.

00:00:41.610 --> 00:00:43.440
>> Sehr genial. Cool. Ich liebe es.

00:00:43.440 --> 00:00:45.840
Nun, verschwenden wir keine Zeit
und lassen Sie uns in die Codes gehen.

00:00:45.840 --> 00:00:47.565
>> Lassen Sie uns richtig zu ihm. Alles klar.

00:00:47.565 --> 00:00:50.295
Für den letzten ist dies am meisten,

00:00:50.295 --> 00:00:51.750
Ich will nicht sagen, kompliziert,

00:00:51.750 --> 00:00:53.640
aber ein sehr großer Randfall.

00:00:53.640 --> 00:00:54.165
>> In Ordnung.

00:00:54.165 --> 00:00:57.225
>> Was das ist also lange
Aufgaben. Sie sind also vertraut?

00:00:57.225 --> 00:00:58.035
>> Ich bin es.

00:00:58.035 --> 00:01:00.260
>> So lange laufende Aufgaben in

00:01:00.260 --> 00:01:02.960
TPL sind Aufgaben, die
kann für eine lange Zeit laufen.

00:01:02.960 --> 00:01:04.850
Manchmal ist man einfach
etwas laufen lassen möchten.

00:01:04.850 --> 00:01:09.470
Vielleicht zieht es, vielleicht ist es
Überprüfung Ihrer Beschleunigungsmesserwerte,

00:01:09.470 --> 00:01:10.880
so etwas,
im Hintergrund ausgeführt werden.

00:01:10.880 --> 00:01:12.745
Sie wollen es nicht wirklich stoppen.

00:01:12.745 --> 00:01:15.360
Also in einem schlechten Fall,

00:01:15.360 --> 00:01:17.220
in meinem schlechten Beispiel hier,

00:01:17.220 --> 00:01:19.190
ich werde anfangen

00:01:19.190 --> 00:01:23.285
100 Aufgaben, die
Druckpunkte pro Sekunde.

00:01:23.285 --> 00:01:24.350
>> Das macht Sinn.

00:01:24.350 --> 00:01:25.805
>> Sie werden nur laufen.

00:01:25.805 --> 00:01:28.410
Feuer und vergessen, vergessen
sie, und sie werden einfach laufen.

00:01:28.410 --> 00:01:30.210
>> Visual Studio schreit dich sogar.

00:01:30.210 --> 00:01:33.060
>> Genau. Das Visuelle
Studio ist schlauer als ich.

00:01:33.060 --> 00:01:36.020
Dann, obendrein,

00:01:36.020 --> 00:01:38.500
Ich werde 100 Aufgaben ausführen
die tatsächlich abgeschlossen sind.

00:01:38.500 --> 00:01:39.240
>> Okay.

00:01:39.240 --> 00:01:40.550
>> So werden wir sehen, was
geschieht mit diesen.

00:01:40.550 --> 00:01:43.310
Diese Aufgaben sind also die
Aufgaben, die in Ihrer App,

00:01:43.310 --> 00:01:44.660
Sie tatsächlich laufen wollen,

00:01:44.660 --> 00:01:46.400
vielleicht laden Sie HTML herunter,

00:01:46.400 --> 00:01:48.920
Herunterladen von Bildern,
Solche Dinge zu tun.

00:01:48.920 --> 00:01:50.810
Alles klar. Hier ist also ein schlechtes Beispiel.

00:01:50.810 --> 00:01:54.920
Wir führen 100 Aufgaben aus
die jede Sekunde Punkte drucken.

00:01:54.920 --> 00:01:57.575
So ist jeder dieser
Aufgaben ist das Drucken eines Punktes.

00:01:57.575 --> 00:01:59.705
Jede Sekunde,
es ist feuern vergessen.

00:01:59.705 --> 00:02:02.374
Dann fangen wir an,
100 weitere Aufgaben

00:02:02.374 --> 00:02:04.975
die Tests sind, die
wir wollen eigentlich laufen.

00:02:04.975 --> 00:02:07.160
>> Ich sehe. Was sehen wir also?
in der Ausgabe hier dann?

00:02:07.160 --> 00:02:08.240
>> Also in der Ausgabe hier,

00:02:08.240 --> 00:02:10.370
wir werden sehen, dass ein Haufen

00:02:10.370 --> 00:02:12.350
der Threads beginnen
aus dem Threadpool.

00:02:12.350 --> 00:02:15.545
Dies is.NET Verwaltung
unsere Fäden für uns.

00:02:15.545 --> 00:02:16.040
>> Okay. Ich hab es.

00:02:16.040 --> 00:02:20.285
>> Wir haben schon einmal darüber gesprochen. So wie
Sie können sehen, es ist wirklich langsam.

00:02:20.285 --> 00:02:23.090
Es gibt kein Gewicht in
zwischen diesen beiden.

00:02:23.090 --> 00:02:26.725
So ist die zweite Charge einer 100
Aufgaben sollten bereits ausgeführt werden.

00:02:26.725 --> 00:02:29.940
Aber weil diese so beharrlich sind,

00:02:29.940 --> 00:02:32.630
sie laufen alle
sekunde für 100 Aufgaben.

00:02:32.630 --> 00:02:35.120
Es dauert wirklich
eine Weile, um sich zu drehen.

00:02:35.120 --> 00:02:38.150
So sehen wir, sobald der Thread
Pool holt hier auf.

00:02:38.150 --> 00:02:41.380
Wir sollten anfangen, diese
Tests abfeuern. Na bitte.

00:02:41.380 --> 00:02:42.130
>> Da geht es hin.

00:02:42.130 --> 00:02:43.340
>> Das sind also die Aufgaben, die wir

00:02:43.340 --> 00:02:45.275
wollen und sie sind
bis zum Abschluss ausgeführt werden.

00:02:45.275 --> 00:02:46.610
Aber dazwischen werden Sie sehen, dass

00:02:46.610 --> 00:02:50.205
die vorherige Aufgabe feuern und vergessen
immer noch ihre Punkte drucken.

00:02:50.205 --> 00:02:53.280
>> Ich sehe. Haben Sie. Also
alles ist alles.

00:02:53.280 --> 00:02:56.655
Außerdem sehen wir diese Garbage Collection
ein bisschen verrückt zu machen.

00:02:56.655 --> 00:02:57.840
Es ist nicht sehr glücklich mit uns, ja.

00:02:57.840 --> 00:03:02.300
>> Nein. Das ist nicht zu
ungewöhnlich, um ehrlich zu sein.

00:03:02.300 --> 00:03:05.090
Wir haben Fälle in diesem
wo sich der Threadpool befindet

00:03:05.090 --> 00:03:08.225
nur erstickt und keine Aufgaben
kann für Minuten beginnen.

00:03:08.225 --> 00:03:10.970
Manchmal, wenn Sie es falsch verwenden,

00:03:10.970 --> 00:03:12.320
es kann sich verklemmen.

00:03:12.320 --> 00:03:14.045
>> Sie haben sie. Wie kann ich das beheben?

00:03:14.045 --> 00:03:16.070
>> Also starten wir einfach neu

00:03:16.070 --> 00:03:18.215
die App, um sicherzustellen, dass
diese Aufgaben sind tot.

00:03:18.215 --> 00:03:19.550
>> Sie haben sie.

00:03:19.550 --> 00:03:21.545
>> Dann gehen wir zur Korrektur.

00:03:21.545 --> 00:03:21.995
>> Sicher.

00:03:21.995 --> 00:03:25.340
>> So haben wir die
Tools, um dies zu tun.

00:03:25.340 --> 00:03:27.965
Wir können einen Haufen langer
im Hintergrund ausgeführt werden,

00:03:27.965 --> 00:03:31.610
aber was wir tun müssen, ist
Verwenden Sie Task.Factory.StartNew.

00:03:31.610 --> 00:03:34.055
Dieser Code im Inneren ist derselbe.

00:03:34.055 --> 00:03:35.960
Wir drucken gerade diese Punkte aus.

00:03:35.960 --> 00:03:39.420
Aber dann, im Parameter
für Erstellungsoptionen,

00:03:39.420 --> 00:03:42.135
Sie müssen hinzufügen
TaskCreationOptions.Longrunning.

00:03:42.135 --> 00:03:45.945
>> Ich sehe. Das ist also etwas
eingebaute to.NET Task Factory.

00:03:45.945 --> 00:03:48.570
Was ist der Unterschied
zwischen diesem Task.Start

00:03:48.570 --> 00:03:50.460
und Task Factory?
Beginnen Sie hier, denke ich.

00:03:50.460 --> 00:03:52.110
>> So Tasks.Run ist eigentlich

00:03:52.110 --> 00:03:56.430
Task.Factory.StartNew mit
die Standardparameter.

00:03:56.430 --> 00:03:57.915
Es ist eine Abkürzung für uns.

00:03:57.915 --> 00:03:58.440
>> Sie haben sie.

00:03:58.440 --> 00:04:01.100
>> So Task.Factory.StartNew
ist feinkörniger.

00:04:01.100 --> 00:04:02.180
Wir haben eine Reihe von Parametern.

00:04:02.180 --> 00:04:03.695
Ich habe den Link zum Verweis hinzugefügt.

00:04:03.695 --> 00:04:04.955
>> Schön.

00:04:04.955 --> 00:04:08.180
>> Es gibt noch viel mehr
als wir da hineinpassen können.

00:04:08.180 --> 00:04:11.785
Aber im Grunde, wenn wir
eine Aufgabe, die so lange läuft,

00:04:11.785 --> 00:04:15.695
es hat einen separaten Thread
Pool, über den es intelligent ist

00:04:15.695 --> 00:04:19.655
und es wird in der Lage sein, überzuzeichnen.

00:04:19.655 --> 00:04:23.510
Sie können die Dokumentation lesen.
Werfen wir also einen Blick.

00:04:23.510 --> 00:04:26.500
Dies ist die einzige Änderung,
Task.Factory.StartNew.

00:04:26.500 --> 00:04:30.540
Also werden wir sehen, das sind die
100 Aufgaben, die Punkte drucken.

00:04:30.540 --> 00:04:33.420
Unsere anderen Aufgaben beginnen bereits.

00:04:33.420 --> 00:04:34.185
>> ja.

00:04:34.185 --> 00:04:36.465
>> Einfach so. Wir
nicht einmal warten.

00:04:36.465 --> 00:04:38.580
>> So früher haben wir
tatsächlich einen Wafer hatte.

00:04:38.580 --> 00:04:41.100
Ein Haufen von ihnen, alles, was sie bekommen
Geplant. Alles geschah.

00:04:41.100 --> 00:04:44.945
Jetzt sehen wir tatsächlich
die Dinge funktionieren wie erwartet.

00:04:44.945 --> 00:04:46.985
Von Anfang an

00:04:46.985 --> 00:04:49.590
alle Aufgaben waren alle
gleichzeitig ausgeführt werden.

00:04:49.590 --> 00:04:50.220
>> Genau.

00:04:50.220 --> 00:04:52.025
>> Der lange Lauf ist
weiter.

00:04:52.025 --> 00:04:55.310
Sie haben diese
100 Aufgaben, wo wir vorher saßen

00:04:55.310 --> 00:04:58.565
für was wie 20 Sekunden
warten. Das ist verrückt.

00:04:58.565 --> 00:04:58.790
>> ja.

00:04:58.790 --> 00:04:59.480
>> Sehr cool.

00:04:59.480 --> 00:05:00.305
>> Es ist wahnsinnig.

00:05:00.305 --> 00:05:02.115
>> Nun, Dean, das ist genial.

00:05:02.115 --> 00:05:04.800
Nur so viel toller Inhalt
gerade dort eingepackt.

00:05:04.800 --> 00:05:05.160
>> Danke, James.

00:05:05.160 --> 00:05:07.550
>> Jetzt werden wir natürlich
alle Links zur Show in

00:05:07.550 --> 00:05:10.490
die Show-Notizen unten für
alle bewährten Verfahren,

00:05:10.490 --> 00:05:12.545
Dokumentation, diese
Beispielcode, alles.

00:05:12.545 --> 00:05:17.030
Sie können auch zu
aka.MS/xamarinbestpractices

00:05:17.030 --> 00:05:19.310
um mehr über alle
der besten Praktiken in der

00:05:19.310 --> 00:05:21.820
Xamarin für das mobile CAT
Team, das super genial ist.

00:05:21.820 --> 00:05:23.695
Dean, vielen Dank
um dies alles auszuschalten.

00:05:23.695 --> 00:05:24.850
>> Vielen Dank für Ihre
ich in der Show, James.

00:05:24.850 --> 00:05:26.675
>> Absolut. Prost. Stelle sicher

00:05:26.675 --> 00:05:28.925
Du folgst dem Xamarin
Show bei YouTube,

00:05:28.925 --> 00:05:30.425
Kanal Neun. Sie wissen, wohin Sie gehen müssen.

00:05:30.425 --> 00:05:31.850
Schlagen Sie diese Benachrichtigungsglocke,

00:05:31.850 --> 00:05:33.725
Teil der
Benachrichtigungs-Kader.

00:05:33.725 --> 00:05:35.390
Ich bin James Montemagno Dies ist

00:05:35.390 --> 00:05:38.550
Die Xamarin Show und
Danke fürs Zuschauen.

00:05:45.230 --> 00:05:48.050
>> Hey, James hier.
Wollte nur einchecken

00:05:48.050 --> 00:05:50.105
und vielen Dank für
sehen Sie sich dieses Video an.

00:05:50.105 --> 00:05:53.195
Nun, tun Sie alle Dinge, die Sie
wissen, dass Sie so tun möchten, wie

00:05:53.195 --> 00:05:55.760
abonnieren und ding
diese Benachrichtigungsglocke,

00:05:55.760 --> 00:05:57.770
Teil der
Benachrichtigungs-Kader.

00:05:57.770 --> 00:05:59.150
Während Sie hier sind, schauen Sie sich

00:05:59.150 --> 00:06:02.360
all diese tollen Videos
die ich bereits aufgenommen habe.

00:06:02.360 --> 00:06:05.970
Klicken Sie auf das Ding. klicken
Es. Beobachten Sie es. Tu es.

