C# 从异步方法返回bool

C# 从异步方法返回bool,c#,.net,asynchronous,async-await,C#,.net,Asynchronous,Async Await,我必须使用异步的方法,并返回任务。但在await关键字处,我得到的不能作为编译时错误等待字符串。我也试图从方法中返回布尔,但没有成功。这是我的方法 public async Task<bool> searchName(string Name) { Group retrievedGroup = new Group(); string foundGroup = null; try { foundGroup = await Client().

我必须使用异步的方法,并返回任务。但在await关键字处,我得到的不能作为编译时错误等待字符串。我也试图从方法中返回布尔,但没有成功。这是我的方法

public async Task<bool> searchName(string Name)
{
    Group retrievedGroup = new Group();
    string foundGroup = null;
    try
    {
        foundGroup = await Client().Groups
                .Where(group => group.DisplayName.Equals(Name))
                .ExecuteAsync().Result.ToString();

         if (foundGroup == "Some Name")
         {
             return true;
         }
         else
         {
             return false;
         }
    }
    catch (){ }
}

问题在于操作员的优先级。 使用括号。您还应该删除结果

圆点。具有比等待更高的优先级,因此

foundGroup = await Client().Groups
        .Where(group => group.DisplayName.Equals(Name))
        .ExecuteAsync().Result.ToString();
它将等待ToString;。还要注意的是

ExecuteAsync().Result.ToString();

访问任务的结果会导致它执行,并且您会失去所有想要达到的异步条件。

问题只是操作员的优先级。 使用括号。您还应该删除结果

圆点。具有比等待更高的优先级,因此

foundGroup = await Client().Groups
        .Where(group => group.DisplayName.Equals(Name))
        .ExecuteAsync().Result.ToString();
它将等待ToString;。还要注意的是

ExecuteAsync().Result.ToString();
访问任务的结果会导致它执行,并且您会丢失所有想要达到的异步条件。

不要使用任务。使用异步等待的结果,因为它只会同步阻止您的方法调用。相反,只需等待:

旁注:

在异步方法上使用异步后缀。 一定要遵循.NET命名约定,这是方法的基础。 不要使用空的catch块,当您试图调试代码时,它们会使您的生活更加困难,并且不理解为什么此方法返回false而不是抛出。或者至少记录一些东西。 我使用了string.Equals而不是==因为您可能想提供一个StringComparison选项,例如,如果您想进行不区分大小写的搜索。 不要将Task.Result与async wait一起使用,因为它只会同步阻止方法调用。相反,只需等待:

旁注:

在异步方法上使用异步后缀。 一定要遵循.NET命名约定,这是方法的基础。 不要使用空的catch块,当您试图调试代码时,它们会使您的生活更加困难,并且不理解为什么此方法返回false而不是抛出。或者至少记录一些东西。 我使用了string.Equals而不是==因为您可能想提供一个StringComparison选项,例如,如果您想进行不区分大小写的搜索。
什么意思直到全部完成?什么意思直到全部完成?我需要返回一个bool..不是string为什么你认为这个方法返回一个string?@Lara为什么你在等待一个string?你在我的代码中到底在哪里做的?`string foundGroup=await`我正在像这样等待..但得到的错误正如上面所说的那样line@Lara给我看完整的行。我需要返回bool..而不是string为什么你认为这个方法会返回string?@Lara你为什么要等待string?你在我的代码中到底在哪里做的?`string foundGroup=await`我正在像这样等待..但得到的错误正如上面所说的那样line@Lara给我看完整的一行。