我正在尝试从我的quartz.net定时作业调用一个webapi方法。我不确定我所做的方式是否正确?有人能帮忙确认这是否是正确的方式,或者是否有更好的方法可用吗?
MethodRepository.cs
public async Task<IEnumerable<ResultClass>> GetResult(string queryCriteria)
{
return await _httpClient.Get(queryCriteria);
}
Quartz任务:
public async void Execute(IJobExecutionContext context)
{
var results= await _repo.GetResult();
}
通用Httpclient:
public async Task<IEnumerable<T>> Get(string queryCriteria)
{
_addressSuffix = _addressSuffix + queryCriteria;
var responseMessage = await _httpClient.GetAsync(_addressSuffix);
responseMessage.EnsureSuccessStatusCode();
return await responseMessage.Content.ReadAsAsync<IEnumerable<T>>();
}
但是Quartz文档说我不能在Quartz作业中使用异步方法。那么Web API方法怎么办呢?
我可以将Quartz作业执行方法更改为:
public void Execute(IJobExecutionContext context)
{
var result = _repo.GetResult().Result;
}