private bool _secondRequest;
public async Task<UserModel> RunSomeMethodAsync(UserModel model, bool mode = true)
{
// Some code here...
HttpClient client = new HttpClient();
var response = await client.SendAsync(request);
var responseContent = await response.Content.ReadAsStringAsync();
if (responseContent != "[]\r")
{
return await ProcessThisStringAsync(responseContent);
{
else if (responseContent == "[]\n" && !_secondRequest)
{
_secondRequest = true;
await RunSomeMethodAsync(model, false) // Run same method, different param
}
return model.Error = "An error has occurred";
}
Если я пропустил что-то очевидное, это должно работать с использованием синхронного кода. Будет ли эта версия работать асинхронно? Я подумал о добавлении Task.Delay (1000), но это выглядело как-то вроде kludgy.Вызов метода асинхронной асинхронной/ожидаемой рекурсии
Вы хотите, чтобы вы запускали его параллельно? Это уже асинхронно. – Rob
Я хочу дождаться первого ответа, и он не пуст, обработайте его и остановитесь. Если пусто, измените параметр и запустите его снова, чтобы получить второй ответ и обработайте его. –
Так оно и будет. Я заметил, что вы возвращаете строку, когда вы должны возвращать модель (и то же самое относится к ее рекурсивному вызову - возможно, вы хотите, чтобы 'return ожидал RunSomeMethodAsync (model, false)'). В какой проблеме вы столкнулись? Это будет сделано так же, как вы говорите, как только ошибки компиляции будут устранены. – Rob