如何摆脱异步任务

时间:2018-09-09 15:07:43

标签: c# asynchronous task

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

说我有这种方法:

public async Task DoSomething(Item a, Person b)
{
   if(b is NPC)
   {
     await DoFunction()
   }

   // Code to Handle Everything else
}

我的问题是,在第一次等待后如何有效地退出该方法?有人告诉我,在异步任务中使用返回值是不好的做法。它像使用有效的Ifs和​​Elses一样简单,而不是使用单一的ifs吗?这真是令人困惑。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我会尝试:

        if (b is NPC)
        {
            await Task.Run(() =>
            {
                return DoFunction();
            });
        }

答案 2 :(得分:0)

返回什么?返回DoSomething()还是返回DoFunction()?由于DoSomething()是“异步任务”,您别无选择-您无法返回任何值。换句话说,这不是一个坏习惯,它甚至不会编译。如果删除“异步”,则DoSomething()将必须返回Task,然后显然将无法调用“等待”。请记住,“异步”会更改方法返回值的语法