Created
December 29, 2023 14:49
-
-
Save sangram-chavan/d7982bffdb9e17cdd1d60cd0e94cc96d to your computer and use it in GitHub Desktop.
Revisions
-
sangram-chavan created this gist
Dec 29, 2023 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,37 @@ [Serializable] public class MethodLockedAttribute : MethodInterceptionAspect { private int maximum_concurrency_number; private static ConcurrentDictionary<int,SemaphoreSlim> SemaphoreSlimRepo=new ConcurrentDictionary<int, SemaphoreSlim>(); public MethodLockedAttribute(int maximumConcurrencyNumber) { maximum_concurrency_number = maximumConcurrencyNumber; } public override async Task OnInvokeAsync(MethodInterceptionArgs args) { SemaphoreSlim semaphore=new SemaphoreSlim(maximum_concurrency_number); semaphore=SemaphoreSlimRepo.GetOrAdd(args.Method.GetMetadataToken(), semaphore); await semaphore.WaitAsync(); try { await args.ProceedAsync(); } finally { semaphore.Release(); } } [MethodLocked(3)] public async Task AddUser(string username) { await _users.AddAsync(username); } }