Можно ли передать двойную переменную в качестве аргумента в функцию Timer Trigger Azure? - PullRequest
0 голосов
/ 28 июня 2018

Я запускаю функцию Azure для таймера. Я использую переменную, которая указывает TimeToCopy. Эта переменная должна обновляться после каждой итерации функции.

У меня есть:

[FunctionName("Function1")]
    public static void Run([TimerTrigger("0 */2 * * * *")]TimerInfo myTimer, TraceWriter log, myTimerItem elapsedTime)

Я хочу:

[FunctionName("Function1")]
        public static void Run([TimerTrigger("0 */2 * * * *")]TimerInfo myTimer, TraceWriter log, myTimerItem elapsedTime, double TimeToCopy)

1 Ответ

0 голосов
/ 28 июня 2018

Функции не могут надежно сохранять состояние между вызовами в памяти.

Если вы можете принять возможность потери данных, вы можете сохранить значение в статической переменной.

Для надежного сохранения / восстановления состояния вам необходимо добавить дополнительную привязку к вашей функции, например, использовать Table Storage. Что-то вроде:

[FunctionName("Function1")]
public static void Run([TimerTrigger("0 */2 * * * *")] TimerInfo myTimer, 
                       myTimerItem elapsedTime,
                       [Table("MyFuncState", "default", "Function1")>] StateEntity entity)
{
    // ...
    entity.TimeToCopy = entity.TimeToCopy * 2.0;
}

public class StateEntity: TableEntity
{
    public double TimeToCopy { get; set; }
}
...