내 코드가 매번 동일한 문자열을 반환하는 이유를 분명히 해줄 수 있습니까?항상 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()'메소드를 비동기'Task'메소드로 만드는 것이 더 좋을 것입니다. 타이머 틱 핸들러는'HubText.Text = await getData();'본문과 함께 비동기적일 수 있습니다. 현재 나는 5 초가 지나서 다음 값을 보길 기대합니다. 그러나 URL이 무엇을 반환 할 것인지에 대해 알려주지 않았으므로 왜 변경 될지 알 수 없습니다. –
한 가지 더 많은 방법을 발견했습니다. Windows.Net.Http에 대해 System.Net.Http를 사용했습니다. – SABlyu