gpt4 book ai didi

c# - 异步和等待 - 控制会立即从 MVC 操作方法返回吗?

转载 作者:行者123 更新时间:2023-11-30 19:38:57 25 4
gpt4 key购买 nike

我只是在学习如何使用异步和等待。假设我有以下发送电子邮件的方法:

public async void Send()
{
// Create a network credentials object
var credentials = new NetworkCredential(azureUserName, azurePassword);

// Create an Web transport for sending the email
var transportWeb = new Web(credentials);

// Send the email
await transportWeb.DeliverAsync(this._email);
}

此代码将存在于我正在创建的 MVC 应用程序中。用户将在浏览器中启动一些操作,然后调用 Controller 操作方法,最终将在操作方法中调用此电子邮件方法。

我的理解是,一旦执行完最后一行(带有 await 的那一行),控制权立即返回给调用者,同时 DeliverAsync 方法完成其任务。假设这是正确的,我们还假设电子邮件需要很长时间才能发送,可能需要 30 秒。即使 DeliverAsync 方法仍在尝试执行发送, Controller 操作方法是否会将控制返回给浏览器?理想情况下,这就是我希望发生的事情。

最佳答案

你的理解是正确的。但是不要使用 async void,没有必要。使用 async Task 并确保处理错误。现在,您永远不会发现导致崩溃的错误。

Will the controller action method return control back to the browser even though the DeliverAsync method is still attempting to execute the send?

这取决于该方法的作用。它的代码不在这里。现在它没有办法等待 Send 所以可能是。

同样重要的是要注意,ASP.NET 中的后台工作可能会在工作进程退出(部署、重启、崩溃等)时随时结束。

关于c# - 异步和等待 - 控制会立即从 MVC 操作方法返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30177087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com