c# - 只有处于完成状态的任务才能被释放
问题描述
我正在从服务发送请求并显式调用注销 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() 进行注销调用?
解决方案
推荐阅读
- php - 如何在 Laravel 中显示数据库中的图像
- c - 在c中列出数组的数字内容
- javascript - 用于加载数据 JSON 文件的 JavaScript 代码
- sql - 在 PostgreSQL 中对连续行进行分组
- rust - 将 Result 转换为自定义 Fail impl 的惯用方法是什么?
- javascript - 如何解决 NodeJS 方法优先级问题
- php - 在简单的 PHP 应用程序中访问 Twilio TranscriptionText
- json - NGX-FORMLY - 具有多级导航的嵌套表单?
- java - 如何在jTable的标题中制作两行
- python - 如何在烧瓶中检索记录的用户 ID?