Jak mogę oczekiwać na metodę asynchroniczną bez modyfikatora asynchronicznego w tej metodzie nadrzędnej?
Mam metodę, na którą chcę czekać, ale nie chcę powodować efektu domina, myśląc, że cokolwiek może nazywać tę metodę wywołania i czekać na nią. Na przykład mam tę metodę:
public bool Save(string data)
{
int rowsAffected = await UpdateDataAsync(data);
return rowsAffected > 0;
}
Dzwonię:
public Task<int> UpdateDataAsync()
{
return Task.Run(() =>
{
return Data.Update(); //return an integer of rowsAffected
}
}
To nie zadziała, ponieważ muszę wpisać „async” w sygnaturze metody dlaSave()
a potem nie mogę wrócićbool
Muszę to zrobićTask<bool>
ale nie chcę, żeby ktokolwiek oczekiwałSave()
metoda.
Czy istnieje sposób na zawieszenie wykonywania kodu, takiego jak oczekiwanie, lub oczekiwanie na ten kod bez modyfikatora async?