【发布时间】:2014-09-12 19:01:27
【问题描述】:
我正在查看其他开发人员的这些代码行:
bool isValid = await engine.GetTaskByIdAsync(taskId);
if(isValid )
....
当我使用async操作时,它是在异步操作完成的同时做独立的工作:
Task<bool> task = engine.GetTaskByIdAsync(taskId);
//Do work that doesn't need the "task" variable
bool completed = await task;
if(bool)
....
似乎第一个示例启动了异步操作,然后立即开始等待。这里有什么我不明白的价值吗?
注意:此代码位于应用程序的数据访问层,因此不与用户界面交互。
【问题讨论】:
-
好的,启动一个进程立即返回,如果你事先有逻辑有什么关系?
-
“似乎第一个示例启动了异步操作,然后立即开始等待”-
await导致我们在继续之前等待调用完成。 -
在没有等待任务的情况下,你会如何做那个程序员所做的事情?
-
@DanPantry 不。它没有。可悲的是,这是一个普遍的误解。它导致方法的其余部分作为等待任务的延续,在该任务完成时执行。这与等待该任务非常不同。
-
使用立即等待是为了方便不锁定用户界面。
标签: c#