Может ли кто-нибудь объяснить мне, почему мой код возвращает одну и ту же строку каждый раз?HTTPClient каждый раз возвращает ту же строку
public MainPage()
{
this.InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(5);
timer.Tick += OnTimerTick;
timer.Start();
}
private void OnTimerTick(object sender, object e)
{
getData();
HubText.Text = dumpstr;
}
private async void getData()
{
// Create an HttpClient instance
HttpClient client = new HttpClient();
var uri = new Uri("http://192.168.4.160:8081/v");
try
{
// Send a request asynchronously continue when complete
HttpResponseMessage response = await client.GetAsync(uri);
// Check that response was successful or throw exception
response.EnsureSuccessStatusCode();
// Read response asynchronously
dumpstr = await response.Content.ReadAsStringAsync();
}
catch (Exception e)
{
//throw;
}
}
string dumpstr;
Так каждые 5 секунд я получаю ту же строку, что и в моем первом запросе. Что я делаю неправильно?
Ну, вы действительно не дожидаетесь, пока не получите * свои данные, прежде чем отображать их. Вам было бы лучше сделать метод 'getData()' методом async 'Task', тогда ваш обработчик тикового таймера также может быть асинхронным, с телом' HubText.Text = await getData(); '. В настоящее время я ожидаю, что вы увидите следующее значение 5 секунд слишком поздно. Но поскольку вы не сказали нам ничего о том, что означает URL, чтобы вернуться, мы не знаем, почему это изменилось. –
Я нашел еще один способ: использовать System.Net.Http для Windows.Net.Http; – SABlyu