我创建了一个C# Restsharp 客户端来使用同步调用对我的 API 进行查询。同步调用按应有的方式工作,但是我的异步调用从不返回任何内容。await 运算符应暂停对封闭 async 方法的评估,直到其操作数表示的异步操作完成。当异步操作完成时,等待操作符返回操作的结果。但是,就我而言,这从未发生过。我现在已经搜索了整个堆栈溢出,但我无法弄清楚为什么我的异步调用不会返回任何内容。谁能发现可能导致问题的原因以及我该如何解决?这是我的设置:
客户端方法:
public class Objects{
private readonly IRestClient _restClient;
public Objects(IRestClient restClient)
{
_restClient = restClient;
}
public async Task< List<ObjectGet> CreateObjects(List<ObjectBase>> objects, Boolean createCdfFile = true)
{
var request = new RestRequest("/objects/", Method.POST) { RequestFormat = DataFormat.Json };
var objectsJson = JsonConvert.SerializeObject(objects, Formatting.Indented);
request.AddParameter("create_cdf_file", createCdfFile, ParameterType.QueryString)
.AddParameter("application/json", objectsJson, ParameterType.RequestBody);
IRestResponse<List<ObjectGet>> response = await _restClient.ExecuteAsync<List<ObjectGet>>(request);
return response.Data;
}
}
我的同步调用有效:
var obj = _restClient.FetchAllObjects(filter).GetAwaiter().GetResult();
返回: System.Collections.Generic.List1[RestsharpApiClient.model.ObjectWithRelationships]
我的异步调用执行,但是..
var obj = _restClient.FetchAllObjects(filter);
从不返回任何东西:
但是,如果按顺序在同步调用之前运行异步调用,它们都会返回正确的结果:
var obj = _restClient.FetchAllObjects(filter);
var objAsync = _restClient.FetchAllObjects(filter).GetAwaiter().GetResult();
返回:
System.Collections.Generic.List1[RestsharpApiClient.model.ObjectWithRelationships] , System.Collections.Generic.List1[RestsharpApiClient.model.ObjectWithRelationships]
这是我的项目文件
TargetFramework=netstandard2.0
<LangVersion>8.0</LangVersion>
"Newtonsoft.Json" Version="12.0.3"
"RestSharp" Version="106.11.4"
非常感谢任何帮助