Если ваша деятельность основана на NativeActivity, добавьте частную переменную в качестве переменной реализации во время CacheMetadata и установите ее по мере прохождения циклов активности.Что-то вроде:
public class RetryTest : NativeActivity
{
private Variable<int> count = new Variable<int>("Count", 1);
private Variable<TimeSpan> delayInterval = new Variable<TimeSpan>("DelayInterval", TimeSpan.FromSeconds(5));
private Delay delay = new Delay();
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
metadata.AddImplementationVariable(count);
metadata.AddImplementationVariable(delayInterval);
delay.Duration = new InArgument<TimeSpan>(delayInterval);
metadata.AddImplementationChild(delay);
}
protected override void Execute(NativeActivityContext context)
{
Console.WriteLine("{0} - Execute", DateTime.Now.ToLongTimeString());
count.Set(context, count.Get(context) + 1);
context.ScheduleActivity(delay, OnDelayComplete);
}
private void OnDelayComplete(NativeActivityContext context, ActivityInstance completedInstance)
{
Console.WriteLine("{0} - DelayComplete", DateTime.Now.ToLongTimeString());
if (count.Get(context) < 3)
{
delayInterval.Set(context, TimeSpan.FromSeconds(delayInterval.Get(context).Seconds * count.Get(context)));
context.ScheduleActivity(delay, OnDelayComplete);
}
count.Set(context, count.Get(context) + 1);
}
}
Это должно вывести
8:49:26 a.m. - Execute
8:49:31 a.m. - DelayComplete
8:49:41 a.m. - DelayComplete