using System.Threading.Tasks;
using NeoSmart.AsyncLock;
public static async Task Main()
var asyncLock = new AsyncLock();
async Task InnerFunctionAsync()
using (await asyncLock.LockAsync())
using (await asyncLock.LockAsync())
await InnerFunctionAsync();
await InnerFunctionAsync();
Console.WriteLine("Done!");