у меня есть api rest, написанный в asp. net ядре и развернутый на сервере, который выполняет относительно долгую обработку (около 15 минут), а затем после завершения возвращает строку состояния "ok".
если я запускаю его из веб-браузера, он работает без проблем, как ожидалось. он выполнил задание и вернул «ок», когда закончил.
, но при использовании из приложения WPF, использующего httpclient, задача выполнена, но я так и не получил результат обратно. он продолжает работать бесконечно, даже если все задачи выполнены (я проверил это).
здесь мое событие нажатия кнопки, чтобы начать операцию
try
{
(sender as Button).IsEnabled = false;
savedtime = DateTime.Now;
// this is used to display a timer on the screen so users know how much time it's taking
System.Windows.Threading.DispatcherTimer dispatcherTimer = new
System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += DispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
await Task.Run(async () =>
{
await callserverapi();
});
dispatcherTimer.Stop();
(sender as Button).IsEnabled = true;
await Task.Delay(10000);
this.Close();
и здесь функция callserverapi
private async Task<string> callserverapi()
{
var httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromMinutes(30);
HttpResponseMessage response = await httpClient.GetAsync("https://myremoteserver.com/Api1");
if (response.IsSuccessStatusCode)
{
result = await response.Content.ReadAsAsync<string>();
}
return result;
}
также, если я использую этот же фрагмент кода с удаленным API, который не требует времени, он работает без проблем.
Есть идеи, как это исправить, пожалуйста?
спасибо