остальные API, используемые * настольным приложением c#, работают вечно - PullRequest
0 голосов
/ 29 января 2020

у меня есть 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, который не требует времени, он работает без проблем.

Есть идеи, как это исправить, пожалуйста?

спасибо

...