【发布时间】:2020-02-27 02:05:21
【问题描述】:
我有以下代码:
protected override async void OnStart() {
await Helper.PopulateMetrics();
await Helper.LogStart();
if (Settings.Rev == REV.No && (new[] { 15, 30, 50 }).Contains(Settings.Trk2))
我想我很困惑,因为当我在 await Helper.LogStart() 中设置断点时,我在以“if (Settings ...”开头的行之前看到了他的断点
因为有await,后面的代码应该不会先被命中?
LogStart() 方法如下所示:
public static async Task LogStart()
{
// code
await App.CDB.InsertLogItem(logStart);
}
理想情况下,我希望这两种方法一个接一个地在后台运行,而代码立即跳过它们。
【问题讨论】:
-
好吧,因为你是专门
awaiting 它,在它完成之前什么都不会继续。 -
你似乎完全误解了
await是什么。await之后的行将在等待的事情完成后运行。 -
不,在继续之前,您正在
awaiting 调用结果。如果您省略了await,那么if可能会在await App.CDB.InsertLogItem(logStart);之前执行 -
这能回答你的问题吗? How does await async work in C#
标签: c# async-await