У меня есть этот код, но API имеет ограниченное количество запросов в минуту, поэтому я иногда получаю ошибку 429. Мне нужно подождать около минуты, но пользовательский интерфейс WinForm перестает отвечать (я предполагаю, что я останавливаю поток, когда пользовательский интерфейс делает это ?). Каким будет правильный способ реализовать это?
Код:
public static int sleepTime { get; set; } = 60000;
public static string GetData(string URL)
{
while (true) {
try
{
Controller.SetAppStatus(AppStatusses.FetchingData);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string rt = reader.ReadToEnd();
return rt;
}
catch
{
Controller.SetAppStatus(AppStatusses.Timeout);
Timeout();
}
}
}
public static async void Timeout() {
await Task.Delay(sleepTime);
}