实体框架的Asyc功能无法正常运行

据我所知,异步函数会立即返回。下面的示例代码确认了我。

static void Main(string[] args) {

    StartTasks2();
    Console.ReadKey();
}

private static void StartTasks2() {
    Console.WriteLine($"Task2 Started: {DateTime.Now:s.ffff}");
    AddPersonFake();
    Console.WriteLine($"Task2 Finished: {DateTime.Now:s.ffff}");
}

private static async void AddPersonFake() {
    Console.WriteLine($"AddPersonFake Started: {DateTime.Now:s.ffff}");
    await Task.Delay(2000);
    Console.WriteLine($"AddPersonFake Finished: {DateTime.Now:s.ffff}");
}

enter image description here

但是打击代码不起作用(我正在等待上面的结果。):

static void Main(string[] args) {
    StartTasks1();
    Console.ReadKey();
}


private static void StartTasks1() {
    Console.WriteLine($"Task1 Started: {DateTime.Now:s.ffff}");
    AddPerson();
    Console.WriteLine($"Task1 Finished: {DateTime.Now:s.ffff}");
}

private static async void AddPerson() {
    Console.WriteLine($"AddPerson Started: {DateTime.Now:s.ffff}");
    using ( TempDbContext context = new TempDbContext() ) {
        context.Persons.Add(new Person());
        await context.SaveChangesAsync();
    }
    Console.WriteLine($"AddPerson Finished: {DateTime.Now:s.ffff}");
}

enter image description here

How can I return immediately from AddPerson()?