|
1
277
我通常在只有基于事件的API可用时使用它( for example Windows Phone 8 sockets ):
因此,当与C#5一起使用时,它特别有用
|
|
|
2
92
根据我的经验,
我能想到的最有益的例子是与
我个人对
所有这些方法都利用了
我通过了
那么这一切的美妙之处在于:
|
|
|
3
41
对我来说,这是一个经典的使用场景
使用缓存就是一个很好的例子。你可以有一个
这里可以看到一个代码示例: How to conditionally run a code asynchonously using tasks |
|
|
4
36
在里面
this blog post
,Levi Botelho描述了如何使用
及其用途
|
|
|
5
19
看起来没有人提到,但我想也可以考虑单元测试 现实生活 足够地
我发现
在实际测试程序中:
单元内测试:
毕竟,TaskCompletionSource的这种用法似乎是“不执行代码的Task对象”的另一种情况。 |
|
6
19
任务完成源 用于创建 任务 不执行代码的对象。 在现实世界的场景中, 任务完成源 是I/O绑定操作的理想选择。通过这种方式,您可以获得任务的所有好处(例如返回值、延续等),而不会在操作期间阻塞线程。如果您的“函数”是I/O绑定操作,则不建议使用新的 任务 。相反,使用 任务完成源 ,您可以创建一个从属任务来指示I/O绑定操作何时完成或出现故障。 |
|
7
5
这是一个真实世界的例子,有一个很好的解释 post from the "Parallel Programming with .NET" blog 。你真的应该读一读,但无论如何,这里有一个摘要。 博客文章展示了以下两种实现:
显示的第一个实现基于
这是第二个实现:
|
|
|
8
4
这可能过于简单化了,但TaskCompletion源允许等待事件。由于只有在事件发生时才会设置tcs.SetResult,因此调用者可以等待任务。 观看此视频了解更多见解: |
|
|
9
3
我使用过的真实世界场景
这里的关键概念是,当客户端要求从任务实际启动时开始启动任务时,我将进行解耦。在这种情况下,因为我不希望客户端必须处理资源管理。 请注意,只要您使用的是C#编译器(VS 2012+),就可以在.net 4中使用async/await,请参阅 here 了解更多详细信息。 |
|
|
10
1
我用过
|
|
|
11
-2
Blazor的WebAssemblyHost也使用此功能来阻止.NET虚拟机停止。
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |