private static Task DoHugeWork() { Console.WriteLine("Huge work launched"); return(locker.ExecuteAsync(async context => { Console.WriteLine("Huge work starting"); // stage 1 - 15 seconds await Task.Delay(15000); await context.RenewLeaseAsync(TimeSpan.FromSeconds(20)); Console.WriteLine("Getting more time to get the work done"); // stage 2 - 15 seconds await Task.Delay(15000); await context.RenewLeaseAsync(TimeSpan.FromSeconds(20)); Console.WriteLine("Getting more time to get the work done"); // stage 3 - 15 seconds await Task.Delay(15000); await context.RenewLeaseAsync(TimeSpan.FromSeconds(20)); Console.WriteLine("Getting more time to get the work done"); // stage 4 - 15 seconds await Task.Delay(15000); Console.WriteLine("Huge work finished"); })); }
private static Task DoWork(IDistributedLock locker, int number, string key) { Console.WriteLine($"Worker {key} work n {number} launched"); return(locker.ExecuteAsync(async context => { Console.WriteLine($"Worker {key} work n {number} starting"); await Task.Delay(2000); Console.WriteLine($"Worker {key} work n {number} finished"); })); }
private static Task DoWork(int number) { Console.WriteLine($"Node 1 work n {number} launched"); return(locker.ExecuteAsync(async context => { Console.WriteLine($"Node 1 work n {number} starting"); await Task.Delay(2000); Console.WriteLine($"Node 1 work n {number} finished"); })); }