Доступ к возвращаемому значению из Задачи (C#) - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть метод:

class C1
{
  private async Task OpenCar()    
 {
   ...
    await p.ReopenNewDoor(x, y);
    return //false or true
  }
}

Тогда:

class C1
{
  public Task ReopenNewDoor(int x, int y)
  {
     return mvvm.DoSomething(x,y)
  }      
}

И:

class C3
{
  internal async Task<bool> DoSomething(int x, int y)
  {
    .....
    if(a = b) return false;
    ....
    if(z!) return true;
  }
}

Как узнать, что вернется ReopenNewDoor? (true or false)

Ответы [ 2 ]

5 голосов
/ 03 апреля 2020

Вы должны использовать asyn c await во всех методах

class C1
{
  private async Task<bool> OpenCar()    
 {
   ...
    return await p.ReopenNewDoor(x, y);
  }
}

public async Task<bool> ReopenNewDoor(int x, int y)
{
 return await mvvm.DoSomething(x,y)
}      

Также, пожалуйста, прочитайте это Зачем использовать Async / await полностью вниз

0 голосов
/ 03 апреля 2020
class C1
{
  private async Task<bool> OpenCar()    
  {
   ...
    var result = await p.ReopenNewDoor(x, y);
    return result;
  }
}

Если это не работает, вы можете получить доступ к результату задачи, используя

p.ReopenNewDoor (x, y) .Result;

...