仅当任务处于完成状态时,才可以处置它

时间:2020-07-28 05:36:17

标签: c# api httpclient restapi

我正在从服务发送请求,并显式调用注销API以释放资源,但是标题中出现错误。我正在使用Task.Run()来防止死锁。

当前,这是我的代码:

        var baseAddress = new Uri(baseServiceUrl);
        var cookieContainer = new CookieContainer();
        using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })
        using (var client = new HttpClient(handler) { BaseAddress = baseAddress })
        {
            client.Timeout = TimeSpan.FromSeconds(3600);
            client.DefaultRequestHeaders.Authorization = authentication;
            var requestUrl = GenerateServiceRequestUrl();
            using (var response = Task.Run(() => client.GetAsync(requestUrl)).GetAwaiter().GetResult())
            {
                //call logout explicity
                using (Task.Run(() => client.GetAsync(baseServiceUrl + LogoutUrl).GetAwaiter().GetResult())) { }

                return new MyServiceResponse(response, getContent);
            }
        }

错误来自以下代码行,明确调用了注销:

using (Task.Run(() => client.GetAsync(_baseUrl + LogoutUrl).GetAwaiter().GetResult())) { }

但是,当我尝试将其更改为以下代码时,错误消失了:

using (client.GetAsync(baseServiceUrl + LogoutUrl).Result) { }

我的问题是,是否可以使用Task.Run()进行注销调用?

0 个答案:

没有答案