我想從我的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