Add Config locking and caching
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
namespace Toolkit.Foundation;
|
||||
|
||||
public static class ConfigurationLock
|
||||
{
|
||||
private static readonly ReaderWriterLockSlim readerWriterLock = new();
|
||||
|
||||
public static IDisposable EnterRead()
|
||||
{
|
||||
readerWriterLock.EnterReadLock();
|
||||
return new ConfigurationReaderLockDisposer(readerWriterLock);
|
||||
}
|
||||
|
||||
public static IDisposable EnterWrite()
|
||||
{
|
||||
readerWriterLock.EnterWriteLock();
|
||||
return new ConfigurationWriterLockDisposer(readerWriterLock);
|
||||
}
|
||||
|
||||
private class ConfigurationWriterLockDisposer(ReaderWriterLockSlim lockSlim) :
|
||||
IDisposable
|
||||
{
|
||||
public void Dispose()
|
||||
{
|
||||
lockSlim.ExitWriteLock();
|
||||
}
|
||||
}
|
||||
|
||||
private class ConfigurationReaderLockDisposer(ReaderWriterLockSlim lockSlim) :
|
||||
IDisposable
|
||||
{
|
||||
public void Dispose()
|
||||
{
|
||||
lockSlim.ExitReadLock();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user