常规方法和异步方法有什么区别(OnGet vs OnGetAsync)

What is the difference between regular and Async methods (OnGet vs OnGetAsync)

我开始学习 Razor Pages 的工作原理,教程提到了 OnGet 和 OnPost,还提到我们也有异步选项:OnGetAsync 和 OnPostAsync。但是他们没有提到它们是如何工作的,显然它们是异步的,但是如何呢?他们使用 AJAX 吗?

public void OnGet()
{
}


public async Task OnGetAsync()
{
}

OnGetOnGetAsync 之间没有实际区别。 OnGetAsync 只是包含在发出 GET 请求时应执行的异步代码的方法的命名约定。您可以省略 Async 后缀,但仍然使方法异步:

public async Task OnGet()
{
    ...
    await ....
    ...
}

异步方法是在执行时释放线程的方法,以便在执行结果可用之前可以将其用于其他用途。您可以在此处详细了解异步方法的工作原理:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/#BKMK_WhatHappensUnderstandinganAsyncMethod

您不能在同一个 Razor 页面中同时拥有 Onget 一个 OnGetAsync 处理程序。框架认为它们是相同的。