我想从我的quartz.net计划作业调用webapi方法。我不确定我的做法是对的吗?任何人都可以帮助,如果这是正确的方式或有没有更好的方法可用?如何从石英计划作业同步调用异步方法
MethodRepository.cs
public async Task<IEnumerable<ResultClass>> GetResult(string queryCriteria)
{
return await _httpClient.Get(queryCriteria);
}
石英工作:
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>>();
}
但石英文档说我不能在石英工作使用异步方法。那么Web API方法又如何呢?
我可以改变石英工作执行方法:
public void Execute(IJobExecutionContext context)
{
var result = _repo.GetResult().Result;
}
的可能的复制[如何调用从C#同步方法的异步方法?(http://stackoverflow.com/questions/9343594/how-to-call-asynchronous-method-from-synchronous-method -in-c) – lorond