/
Logris
/
FileWatchService
Обзор
Документация
Войти
/
Logris
/
FileWatchService
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
AdminTools/Service/Extensions/FilePolling/DatabaseLock.cs
50 строк
1 KB
Logrus
polling
18 апр 2025, 10:29
18 апр 2025, 10:29
8f60bed
Код
Авторство
О чём код?
using System; using System.Threading; using System.Threading.Tasks; namespace FilePolling { public static class DatabaseLock { private static readonly SemaphoreSlim _semaphore = new SemaphoreSlim(1, 1); public static void ExecuteWithLock(Action action) { _semaphore.Wait(); try { action(); } finally { _semaphore.Release(); } } public static async Task ExecuteWithLockAsync(Func<Task> asyncAction) { await _semaphore.WaitAsync(); try { await asyncAction(); } finally { _semaphore.Release(); } } public static async Task<T> ExecuteWithLockAsync<T>(Func<Task<T>> asyncAction) { await _semaphore.WaitAsync(); try { return await asyncAction(); } finally { _semaphore.Release(); } } } }