2017-10-13 2 views
1

Ich habe diese Methode:Wie übergebe ich eine asynchrone Methode als Aktion?

public class Publish 
{ 
    public async Task NowAsync(bool isFinal) 
    { 
     //... 
    } 
} 

und ich möchte es als Parameter hier statt () => Console.WriteLine() weitergeben müssen:

RecurringJob.AddOrUpdate("name",() => Console.WriteLine("Hello")); 

AddOrUpdate Methode eine Art Parameter Expression<Action>

Wie kann akzeptiert Ich tue es? Vielen Dank.

+2

'var isFinal = wahr; RecurringJob.AddOrUpdate ("Name", async() => erwarten NowAsync (isFinal)); ' – FCin

+0

Vielleicht [auf diese Weise] (https://stackoverflow.com/questions/8511466/whats-the-method-signature-for- Passing-async-Delegate)? – SeM

+0

@FCin "Async-Lambda-Ausdrücke können nicht in Ausdrucksbäume konvertiert werden" – Blendester

Antwort

2

Beginnend mit hangfire 1.6 (die zu diesem Zeitpunkt 1,5 Jahre alt ist) Sie Asynchron-Methoden übergeben können (Methoden, die Task zurück) zu AddOrUpdate ohne sie zu synchronen Methoden Umwandlung (bis Action):

RecurringJob.AddOrUpdate("name",() => NowAsync(true), (string) null); 
Verwandte Themen