Comment puis-je attendre une méthode asynchrone sans un async modificateur dans cette méthode parent?

J'ai une méthode que j'ai envie d'attendre mais je ne veux pas provoquer un effet domino penser n'importe quoi peut appeler cette méthode d'appel et l'attendent. Par exemple, j'ai cette méthode:

public bool Save(string data)
{
   int rowsAffected = await UpdateDataAsync(data);
   return rowsAffected > 0;
}

Je vais appeler:

public Task<int> UpdateDataAsync()
{
  return Task.Run(() =>
  {
    return Data.Update(); //return an integer of rowsAffected
  }
}

Cela ne marchera pas, parce que je dois mettre "async" dans la signature de la méthode pour Save() et puis je ne peux pas retourner bool j'ai à faire Task<bool> mais je ne veux pas que quelqu'un en attente de la Save() méthode.

Est-il une manière que je peux suspendre l'exécution de code comme attendre ou d'une certaine façon, attendent le code sans l'async modificateur?

Je serais assez ennuyé si vous m'avez donné l'accès à un Save méthode qui a bloqué mon thread, ce qui m'oblige à placer l'appel dans un Task, ce qui est exactement ce que vous pourriez avoir retourné moi en premier lieu. Juste pour dire.

OriginalL'auteur Neal | 2013-06-01