Как передать асинхронный метод как действие?

У меня есть этот метод:

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

и я хочу передать его как параметр здесь вместо () => Console.WriteLine():

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

Метод AddOrUpdate принимает параметр типа Expression<Action>

Как мне это сделать? благодаря.


person Blendester    schedule 13.10.2017    source источник
comment
Может быть, Таким образом?   -  person SᴇM    schedule 13.10.2017
comment
@FCin Асинхронные лямбда-выражения нельзя преобразовать в деревья выражений.   -  person Blendester    schedule 13.10.2017
comment
@Blendester Вы не указали, что это было для Entity-Framework. Entity-Framework вообще не поддерживает это.   -  person Bradley Uffner    schedule 13.10.2017
comment
@BradleyUffner Но это не для инфраструктуры сущностей. Я хочу запустить этот метод в Hangfire.   -  person Blendester    schedule 13.10.2017
comment
Ааа, извините за предположение, я удалю тег. Вместо этого я добавил для вас тег Hangfire`.   -  person Bradley Uffner    schedule 13.10.2017


Ответы (1)


Начиная с hangfire 1.6 (то есть 1.5 лет на данный момент) вы можете передавать асинхронные методы (методы, которые возвращают Task) в AddOrUpdate, не преобразовывая их в синхронные методы (в Action):

RecurringJob.AddOrUpdate("name", () => NowAsync(true), (string) null);
person Evk    schedule 13.10.2017