【发布时间】:2019-08-15 12:02:29
【问题描述】:
考虑以下代码:
public static void Run() {
DoStuffAsync();
}
public static async Task DoStuffAsync() {
PerformCalc();
await DoLongTaskAsync();
PerformAnotherCalc();
}
假设我打电话给Run()。我有几个关于行为的问题:
-
PerformCalc()是否会在与调用Run()的线程相同的线程上被同步调用? -
DoLongTaskAsync()会被异步调用还是同步调用?换句话说,PerformAnotherCalc()会/可以在DoLongTaskAsync()完成之前被调用吗? - 接下来,
DoStuffAsync()方法能否在DoLongAsyncTask()执行完成之前返回?
【问题讨论】:
-
1.是的。 2. 没有。 3. 它可以(或将假设
DoLongTaskAsync确实是异步的并返回一个未完成的任务)return 但不是complete。 -
你可以写一个小测试应用程序自己看看。调用签名中具有 async 的方法而不调用 await 与没有 async 的方法相同。像任何常规的 c# 方法一样。
标签: c# asynchronous async-await task