Ich versuche, eine Webapi-Methode von meinem Quarz.net-Zeitplan-Job aufzurufen. Ich bin mir nicht sicher, ob das, was ich tue, richtig ist? Kann jemand helfen, wenn dies der richtige Weg ist oder gibt es einen besseren Ansatz?Synchron async-Methode von Quarz-Zeitplan-Job aufrufen
MethodRepository.cs
public async Task<IEnumerable<ResultClass>> GetResult(string queryCriteria)
{
return await _httpClient.Get(queryCriteria);
}
Quartz Job:
public async void Execute(IJobExecutionContext context)
{
var results= await _repo.GetResult();
}
generic 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>>();
}
Aber die Quarz-Dokumentation sagt, dass ich nicht Asynchron-Methode in einem Quarz Job verwenden können . Wie kann man dann die Web API Methode anwenden?
Kann ich die Quarz Job ausführen Methode wie:
public void Execute(IJobExecutionContext context)
{
var result = _repo.GetResult().Result;
}
Mögliches Duplikat von [Wie asynchroner Methode von synchroner Methode in C# nennen?] (Http://stackoverflow.com/questions/9343594/how-to-call-asynchronous-method-from-synchronous-method -in-c) – lorond