WEBVTT

00:00:00.000 --> 00:00:02.910
嘿，朋友们回来了
和我的好朋友迪恩

00:00:02.910 --> 00:00:05.760
在高级谈话
异步等待，所以调谐。

00:00:05.760 --> 00:00:12.810
[音乐]

00:00:12.810 --> 00:00:14.925
• 欢迎大家回来
到萨马林秀。

00:00:14.925 --> 00:00:16.110
我是你的主人詹姆斯·蒙特马格诺

00:00:16.110 --> 00:00:18.570
今天，回到第二个
时间我的好朋友

00:00:18.570 --> 00:00:21.540
迪恩在谈论亚同步
等待。怎么样，迪恩？

00:00:21.540 --> 00:00:22.380
* 很好。你好吗？

00:00:22.380 --> 00:00:24.030
我做的太棒了。

00:00:24.030 --> 00:00:26.100
现在，在第一集，

00:00:26.100 --> 00:00:29.610
你展示了基本用途
异步等待的情况，

00:00:29.610 --> 00:00:31.665
怎么了，什么好。

00:00:31.665 --> 00:00:33.150
你今天为我们准备了什么？

00:00:33.150 --> 00:00:34.200
所以这次

00:00:34.200 --> 00:00:35.700
我们将进行高级方案。

00:00:35.700 --> 00:00:37.290
一堆边缘案例。

00:00:37.290 --> 00:00:39.780
使用高级方案
不同的机制

00:00:39.780 --> 00:00:41.610
在TPL和深入。

00:00:41.610 --> 00:00:43.440
* 非常真棒。酷。我喜欢。

00:00:43.440 --> 00:00:45.840
好吧，我们不要浪费时间
让我们进入代码。

00:00:45.840 --> 00:00:47.565
让我们直接得到它。好吧。

00:00:47.565 --> 00:00:50.295
对于最后一个，这是最多的，

00:00:50.295 --> 00:00:51.750
我不想说复杂

00:00:51.750 --> 00:00:53.640
但一个非常大的边缘案件。

00:00:53.640 --> 00:00:54.165
[ ] 好的。

00:00:54.165 --> 00:00:57.225
* 所以这是长跑
任务。这么说你很熟悉？

00:00:57.225 --> 00:00:58.035
"我是。

00:00:58.035 --> 00:01:00.260
• 在 中运行的任务如此长

00:01:00.260 --> 00:01:02.960
TPL 是
可以运行很长时间。

00:01:02.960 --> 00:01:04.850
有时候，你只是
想运行的东西。

00:01:04.850 --> 00:01:09.470
也许是在拉，也许是
检查加速度计值，

00:01:09.470 --> 00:01:10.880
类似的东西，
在后台运行。

00:01:10.880 --> 00:01:12.745
你并不想阻止它

00:01:12.745 --> 00:01:15.360
所以在一个坏的情况下

00:01:15.360 --> 00:01:17.220
以我的坏例子为例

00:01:17.220 --> 00:01:19.190
我要开始

00:01:19.190 --> 00:01:23.285
a 100 个任务
每秒打印点。

00:01:23.285 --> 00:01:24.350
* 这是有道理的。

00:01:24.350 --> 00:01:25.805
• 他们只是要运行。

00:01:25.805 --> 00:01:28.410
火和忘记，忘记
他们，他们只是运行。

00:01:28.410 --> 00:01:30.210
• 视觉工作室甚至大喊大叫。

00:01:30.210 --> 00:01:33.060
* 确切地说。视觉
工作室比我聪明。

00:01:33.060 --> 00:01:36.020
然后，除此之外，

00:01:36.020 --> 00:01:38.500
我要运行100个任务
实际上完成。

00:01:38.500 --> 00:01:39.240
"好的。

00:01:39.240 --> 00:01:40.550
* 所以，我们将看到什么
发生这些。

00:01:40.550 --> 00:01:43.310
因此，这些任务是
任务中的任务，

00:01:43.310 --> 00:01:44.660
你真的想跑

00:01:44.660 --> 00:01:46.400
也许你正在下载HTML

00:01:46.400 --> 00:01:48.920
下载图像，
做这样的事。

00:01:48.920 --> 00:01:50.810
好吧。这里有一个坏例子。

00:01:50.810 --> 00:01:54.920
我们正在运行 100 个任务
每秒打印点。

00:01:54.920 --> 00:01:57.575
因此，每一个这些
任务正在打印点。

00:01:57.575 --> 00:01:59.705
每一秒
是开枪忘了

00:01:59.705 --> 00:02:02.374
然后，我们开始
a 100 个其他任务

00:02:02.374 --> 00:02:04.975
这是测试，
我们真的想跑

00:02:04.975 --> 00:02:07.160
"我明白了。那么，我们看到了什么
在输出在这里呢？

00:02:07.160 --> 00:02:08.240
* 所以在这里的输出，

00:02:08.240 --> 00:02:10.370
我们将看到，一堆

00:02:10.370 --> 00:02:12.350
线程正在启动
从线程池。

00:02:12.350 --> 00:02:15.545
此is.NET管理
我们的线程为我们。

00:02:15.545 --> 00:02:16.040
"好的。明白了。

00:02:16.040 --> 00:02:20.285
[ ] 我们之前讨论过。因此，作为
你可以看到，它真的很慢。

00:02:20.285 --> 00:02:23.090
没有重量
在这两者之间。

00:02:23.090 --> 00:02:26.725
所以第二批100
任务应该已经运行。

00:02:26.725 --> 00:02:29.940
但是，因为这些是如此坚持，

00:02:29.940 --> 00:02:32.630
他们运行每
第二个任务为 100 个。

00:02:32.630 --> 00:02:35.120
这真的需要
一会儿旋转。

00:02:35.120 --> 00:02:38.150
因此，我们将看到一旦线程
池赶上这里。

00:02:38.150 --> 00:02:41.380
我们应该开始看到这些
测试发射。我们开始吧。

00:02:41.380 --> 00:02:42.130
我们走吧。

00:02:42.130 --> 00:02:43.340
* 所以这些任务，我们

00:02:43.340 --> 00:02:45.275
想，他们
运行到完成。

00:02:45.275 --> 00:02:46.610
但是，在中间，你会看到

00:02:46.610 --> 00:02:50.205
以前的任务火和忘记
仍在打印他们的点。

00:02:50.205 --> 00:02:53.280
"我明白了。抓到你了所以
一切都是一切。

00:02:53.280 --> 00:02:56.655
此外，我们看到此垃圾回收
有点疯狂

00:02:56.655 --> 00:02:57.840
我们不太满意，是的。

00:02:57.840 --> 00:03:02.300
* 否。这不是太
不寻常的是诚实的。

00:03:02.300 --> 00:03:05.090
我们已经看到了这个案例
线程池位于何处

00:03:05.090 --> 00:03:08.225
只是窒息，没有任务
可以开始几分钟。

00:03:08.225 --> 00:03:10.970
有时，如果您使用不正确，

00:03:10.970 --> 00:03:12.320
它会卡住的

00:03:12.320 --> 00:03:14.045
#找到你。那么，我该如何解决这个问题呢？

00:03:14.045 --> 00:03:16.070
• 让我们重新开始

00:03:16.070 --> 00:03:18.215
的应用程序，以确保
那些任务都死了

00:03:18.215 --> 00:03:19.550
#找到你。

00:03:19.550 --> 00:03:21.545
[ ] 然后，我们将转到修复。

00:03:21.545 --> 00:03:21.995
* 当然可以。

00:03:21.995 --> 00:03:25.340
* 所以我们有
工具。

00:03:25.340 --> 00:03:27.965
我们可以有一堆长
在后台运行，

00:03:27.965 --> 00:03:31.610
但我们需要做的是
使用任务.工厂.开始新。

00:03:31.610 --> 00:03:34.055
里面的这个代码是相同的。

00:03:34.055 --> 00:03:35.960
我们只是打印出来那些点。

00:03:35.960 --> 00:03:39.420
但是，然后，在参数
对于创建选项，

00:03:39.420 --> 00:03:42.135
您需要添加
任务创建选项.长时间运行。

00:03:42.135 --> 00:03:45.945
"我明白了。所以这是
内置to.NET任务工厂。

00:03:45.945 --> 00:03:48.570
有何区别
在此任务之间。

00:03:48.570 --> 00:03:50.460
和任务工厂？
从这里开始，我猜。

00:03:50.460 --> 00:03:52.110
* 所以任务.运行实际上是

00:03:52.110 --> 00:03:56.430
任务.工厂.开始新
默认参数。

00:03:56.430 --> 00:03:57.915
对我们来说，这是一条捷径。

00:03:57.915 --> 00:03:58.440
#找到你。

00:03:58.440 --> 00:04:01.100
• 所以任务.工厂.开始新
更细粒度。

00:04:01.100 --> 00:04:02.180
我们有一堆参数。

00:04:02.180 --> 00:04:03.695
我添加了指向引用的链接。

00:04:03.695 --> 00:04:04.955
* 美丽。

00:04:04.955 --> 00:04:08.180
* 还有更多
比我们可以适应那里。

00:04:08.180 --> 00:04:11.785
但是，基本上，当我们设置
任务一样长，

00:04:11.785 --> 00:04:15.695
它有一个单独的线程
池，它是智能的

00:04:15.695 --> 00:04:19.655
并且它将能够超额订阅。

00:04:19.655 --> 00:04:23.510
您可以阅读文档。
因此，让我们来看看。

00:04:23.510 --> 00:04:26.500
这是唯一的变化
任务.工厂.开始新。

00:04:26.500 --> 00:04:30.540
因此，我们将看到，这些是
100 个打印点的任务。

00:04:30.540 --> 00:04:33.420
我们的其他任务已经开始。

00:04:33.420 --> 00:04:34.185
* 是的。

00:04:34.185 --> 00:04:36.465
类似。我们
甚至不必等待。

00:04:36.465 --> 00:04:38.580
* 所以之前，我们
实际上有一个晶圆。

00:04:38.580 --> 00:04:41.100
一堆他们，他们得到的
计划。一切都发生了

00:04:41.100 --> 00:04:44.945
所以现在，我们实际上看到
事情按预期工作。

00:04:44.945 --> 00:04:46.985
从一开始

00:04:46.985 --> 00:04:49.590
所有的任务都是
同时运行。

00:04:49.590 --> 00:04:50.220
* 确切地说。

00:04:50.220 --> 00:04:52.025
• 长跑是
仍然继续。

00:04:52.025 --> 00:04:55.310
您已完成这些
100个任务，我们坐之前

00:04:55.310 --> 00:04:58.565
像20秒
等待它。太疯狂了

00:04:58.565 --> 00:04:58.790
* 是的。

00:04:58.790 --> 00:04:59.480
• 非常酷。

00:04:59.480 --> 00:05:00.305
"

00:05:00.305 --> 00:05:02.115
迪恩，这太棒了

00:05:02.115 --> 00:05:04.800
这么多伟大的内容
只是包装在那里。

00:05:04.800 --> 00:05:05.160
谢谢，詹姆斯

00:05:05.160 --> 00:05:07.550
* 现在，当然，我们将把
所有的链接显示

00:05:07.550 --> 00:05:10.490
下面的显示说明
所有最佳实践，

00:05:10.490 --> 00:05:12.545
文档，这
示例代码，一切。

00:05:12.545 --> 00:05:17.030
您也可以转到
aka.MS/xamarinbestpractices

00:05:17.030 --> 00:05:19.310
了解更多关于所有
最佳实践

00:05:19.310 --> 00:05:21.820
用于移动 CAT 的 Xamarin
团队是超级真棒。

00:05:21.820 --> 00:05:23.695
迪恩，非常感谢
显示这一切关闭。

00:05:23.695 --> 00:05:24.850
* 感谢
我在节目中，詹姆斯。

00:05:24.850 --> 00:05:26.675
* 绝对。干杯。确保

00:05:26.675 --> 00:05:28.925
你跟随萨马林
在 YouTube 上展示，

00:05:28.925 --> 00:05:30.425
第九频道你知道该去哪里

00:05:30.425 --> 00:05:31.850
打那个通知铃

00:05:31.850 --> 00:05:33.725
成为的一部分
通知小队。

00:05:33.725 --> 00:05:35.390
我是詹姆斯·蒙特马格诺 这是

00:05:35.390 --> 00:05:38.550
萨马林秀，和
谢谢你的收看。

00:05:45.230 --> 00:05:48.050
嘿，詹姆斯
只是想登记入住

00:05:48.050 --> 00:05:50.105
并感谢您
观看此视频。

00:05:50.105 --> 00:05:53.195
现在，做所有的事情，你
知道你想做这样的，

00:05:53.195 --> 00:05:55.760
订阅，和丁
通知铃，

00:05:55.760 --> 00:05:57.770
成为的一部分
通知小队。

00:05:57.770 --> 00:05:59.150
当你在这里，看看

00:05:59.150 --> 00:06:02.360
所有这些真棒视频
我已经录下来了

00:06:02.360 --> 00:06:05.970
点击那东西。点击
它。小心。做吧。

