@Nulltiton

Как выполнить следующую функцию после предыдущей асинхронной?

По нажатию на кнопку, выполняется два действия:
Первое вызов функции, которая вызывает отправку сообщения и получает ответ (использование функции GetAnswer подсмотрел отсюда https://www.cyberforum.ru/windows-forms/thread2639...):
static public async Task<string> GetAnswer(string text)
        {
            return await Task.Run(() => Send(text));
        }

        static public async Task<string> Send(string text)
        {
            var content = new StringContent(text);
            var response = await client.PostAsync("http://localhost:9901/", content);
            var text1 = response.Content.ReadAsStringAsync().Result.ToString();
            return text1;
        }

Второе действие - обработка получаемого значения:
static public string ResponseProcessing(string text)
        {
            switch (text)
            {
                case "0":
                    return "Не работает";
                case "1":
                    return "Работает";
                default:
                    return "Произошла ошибка";
            }
        }

Код кнопки, которая должна посылать значение из текстбокса, а обработанный ответ положить в другой текстбокс:
private void requestButton_Click(object sender, EventArgs e)
        {
            string response = RequestClass.GetAnswer(idTextBox.Text).ToString();
            answerTextBox.Text = RequestClass.ResponseProcessing(response);
        }

Проблема заключается в том, что сначала выполняется первая функция, с параметром равным null, а только следом за ней идет вторая. Проблема решается использованием Sleep, однако, насколько я понимаю это всего лишь костыль. Как правильно решить эту проблему?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
NikFaraday
@NikFaraday
Student full-stack Developer
Советую вам разобраться в асинхронном программировании.

А вообще, просто перед вызовом первого метода пропишите await и сделайте метод асинхронным
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы