Skip to content

Instantly share code, notes, and snippets.

@Lazin
Created November 11, 2011 11:29
Show Gist options
  • Save Lazin/1357799 to your computer and use it in GitHub Desktop.
Save Lazin/1357799 to your computer and use it in GitHub Desktop.
public class SafeByte
{
ReaderWriterLockSlim locker = new ReaderWriterLockSlim();
byte val;
public byte Value {
get {
using (ReadLock read = new ReadLock(locker)) {
return val;
}
}
set {
using (WriteLock write = new WriteLock(locker)) {
val = value;
}
}
}
}
public class ReadLock : IDisposable
{
ReaderWriterLockSlim lockObject;
public ReadLock(ReaderWriterLockSlim lockobj)
{
lockObject = lockobj;
lockObject.EnterReadLock();
}
~ReadLock()
{
Free();
}
private void Free()
{
lockObject.ExitReadLock();
}
#region IDisposable Members
public void Dispose()
{
Free();
GC.SuppressFinalize(this);
}
#endregion
}
public class WriteLock : IDisposable
{
ReaderWriterLockSlim lockObject;
public WriteLock(ReaderWriterLockSlim lockobj)
{
lockObject = lockobj;
lockObject.EnterWriteLock();
}
~WriteLock()
{
Free();
}
private void Free()
{
lockObject.ExitWriteLock();
}
#region IDisposable Members
public void Dispose()
{
Free();
GC.SuppressFinalize(this);
}
#endregion
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment