emr*_*ins 2 .net task-parallel-library vsix async-await
我有一段代码,大致如下:
async Task Initialize(){
await TaskScheduler.Default;
var service = await CreateServiceAsync();
await TaskScheduler.Default;
var status = await service.CheckStatusAsync();
// ...
}
Run Code Online (Sandbox Code Playgroud)
TaskScheduler.Default
如果我们不使用任务调度程序来安排任何事情,那么等待有什么用呢?如果删除它们,我可能会破坏什么?
这是 Visual Studio Extension (VSIX) 项目的启动代码。
通常,任务调度程序无法await
编辑。但是,VS SDK 确实有一些扩展允许等待任务调度程序。根据文档,它们被用作“切换”调用,以便该async
方法只是在指定的TaskScheduler
.
TaskScheduler.Default
使用线程池进行延续,因此await TaskScheduler.Default
将在方法的其余部分更改为线程池线程。
就我个人而言,我不喜欢“切换”方法,主要是因为可能不知道您所处的上下文,例如在一个catch
块中。我更喜欢使用Task.Run
显式范围来确定在线程池上完成的工作。
归档时间: |
|
查看次数: |
287 次 |
最近记录: |