如何逃离异步任务

我目前正在编写一个不和谐的小项目,并利用异步功能。但是我在理解如何有效地逃避我的方法时遇到了一些麻烦。


说我有这个方法:


public async Task DoSomething(Item a, Person b)

{

   if(b is NPC)

   {

     await DoFunction()

   }


   // Code to Handle Everything else

}

我的问题是,如何在第一次等待之后有效地离开该方法?有人告诉我在异步任务中使用返回是不好的做法。是否像使用有效的 Ifs 和 Elses 一样简单,而不是使用单数 ifs?这让我很困惑。


慕工程0101907
浏览 237回答 3
3回答

茅侃侃

最好和最简单的方法是简单地返回。每个方法都必须在某个时候返回。我不知道为什么以及如何可能是不好的做法。

拉丁的传说

我会试试这个:        if (b is NPC)        {            await Task.Run(() =>            {                return DoFunction();            });        }

慕斯王

回归什么?DoSomething() 的返回还是 DoFunction() 的返回?由于 DoSomething() 是“异步任务”,你别无选择——你不能返回任何值。换句话说,这不是一个坏习惯,它甚至不会编译。如果您删除“async”,那么 DoSomething() 将不得不返回 Task,然后显然它将无法调用“await”。请记住,“异步”会更改方法返回值的语法
打开App,查看更多内容
随时随地看视频慕课网APP