gpt4 book ai didi

c# - 使用 "return"终止或退出 C# 异步方法

转载 作者:可可西里 更新时间:2023-11-01 09:05:13 27 4
gpt4 key购买 nike

我是 C# 5.0 中的 async-await 方法的新手,我脑子里的问题很少

  1. 如果 async 方法未通过输入参数或 null 检查,最好的转义方法是什么?

  2. 在 Task async 方法中使用 return; 的逻辑流程是什么(在某些情况下,它变成了无限循环)?

  3. CancellationTokenTask.Yield 是否更适合这种情况?

public Func<AzureBlobInfo, string, Task> UploadSuccessCallBackAsync { get; set; }

private async Task OnUploadSuccessAsync(AzureBlobInfo info)
{
if (this.UploadSuccessCallBackAsync == null)
{
return;
}

var transactionType = this.FormData.Get("transactionType");
if (string.IsNullOrEmpty(transactionType))
{
transactionType = "unknown";
}

await this.UploadSuccessCallBackAsync(info, transactionType);
}

最佳答案

恕我直言,“在某些问题上失败”的最佳方法是抛出适当的异常,但是如果您希望避免异常,您绝对可以只使用return; .

这将创建一个同步完成的已完成/错误任务,因此使用 await 的调用者将获得已完成的任务并继续使用同一线程。


  • CancellationToken 允许调用者 取消操作,您描述的情况并非如此。

  • Task.Yield 不会终止任何操作,它只会让其他任务运行一段时间并重新安排自身以供稍后使用。

关于c# - 使用 "return"终止或退出 C# 异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25055749/

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