?
using???System;?
using???System.Collections.Generic;?
using???System.Text;?
namespace???Generic_Reusable?
{?
????????interface???ILockable?
????????{?
????????????????void???Lock();?
????????????????void???Unlock();?
????????}?
????????class???SharedMemoryLock???:???ILockable?
????????{?
????????????????#region???ILockable???Members?
????????????????public???void???Lock()?
????????????????{?
????????????????????????Console.WriteLine(?"SharedLock???performs???lock???method.?");?
????????????????}?
????????????????public???void???Unlock()?
????????????????{?
????????????????????????Console.WriteLine(?"SharedLock???performs???unlock???method.?");?
????????????????}?
????????????????#endregion?
????????}?
????????class???FileLock???:???ILockable?
????????{?
????????????????#region???ILockable???Members?
????????????????public???void???Lock()?
????????????????{?
????????????????????????Console.WriteLine(?"FileLock???performs???lock???method.?");?
????????????????}?
????????????????public???void???Unlock()?
????????????????{?
????????????????????????Console.WriteLine(?"FileLock???performs???unlock???method.?");?
????????????????}?
????????????????#endregion?
????????}?
????????class???ReusableLock?<LOCK?>???:???ILockable???where???LOCK???:???ILockable,???new()?
????????{?
????????????????private???LOCK???lock__???=???new???LOCK();?
????????????????#region???ILockable???Members?
????????????????public???void???Lock()?
????????????????{?
????????????????????????lock__.Lock();?
????????????????}?
????????????????public???void???Unlock()?
????????????????{?
????????????????????????lock__.Unlock();?
????????????????}?
????????????????#endregion?
????????}?
????????class???Program?
????????{?
????????????????static???void???Main(string[]???args)?
????????????????{?
????????????????????????try?
????????????????????????{?
????????????????????????????????ReusableLock?<SharedMemoryLock?>???theLock???=???new???ReusableLock?<SharedMemoryLock?>();?
????????????????????????????????theLock.Lock();?
????????????????????????????????//???TODO:???Add???your???code???here?
????????????????????????????????theLock.Unlock();?
????????????????????????}?
????????????????????????catch???(Exception???ex)?
????????????????????????{?
????????????????????????????????Console.WriteLine(ex.Message);?
????????????????????????}?
????????????????}?
????????}?
}?
using???System.Collections.Generic;?
using???System.Text;?
namespace???Generic_Reusable?
{?
????????interface???ILockable?
????????{?
????????????????void???Lock();?
????????????????void???Unlock();?
????????}?
????????class???SharedMemoryLock???:???ILockable?
????????{?
????????????????#region???ILockable???Members?
????????????????public???void???Lock()?
????????????????{?
????????????????????????Console.WriteLine(?"SharedLock???performs???lock???method.?");?
????????????????}?
????????????????public???void???Unlock()?
????????????????{?
????????????????????????Console.WriteLine(?"SharedLock???performs???unlock???method.?");?
????????????????}?
????????????????#endregion?
????????}?
????????class???FileLock???:???ILockable?
????????{?
????????????????#region???ILockable???Members?
????????????????public???void???Lock()?
????????????????{?
????????????????????????Console.WriteLine(?"FileLock???performs???lock???method.?");?
????????????????}?
????????????????public???void???Unlock()?
????????????????{?
????????????????????????Console.WriteLine(?"FileLock???performs???unlock???method.?");?
????????????????}?
????????????????#endregion?
????????}?
????????class???ReusableLock?<LOCK?>???:???ILockable???where???LOCK???:???ILockable,???new()?
????????{?
????????????????private???LOCK???lock__???=???new???LOCK();?
????????????????#region???ILockable???Members?
????????????????public???void???Lock()?
????????????????{?
????????????????????????lock__.Lock();?
????????????????}?
????????????????public???void???Unlock()?
????????????????{?
????????????????????????lock__.Unlock();?
????????????????}?
????????????????#endregion?
????????}?
????????class???Program?
????????{?
????????????????static???void???Main(string[]???args)?
????????????????{?
????????????????????????try?
????????????????????????{?
????????????????????????????????ReusableLock?<SharedMemoryLock?>???theLock???=???new???ReusableLock?<SharedMemoryLock?>();?
????????????????????????????????theLock.Lock();?
????????????????????????????????//???TODO:???Add???your???code???here?
????????????????????????????????theLock.Unlock();?
????????????????????????}?
????????????????????????catch???(Exception???ex)?
????????????????????????{?
????????????????????????????????Console.WriteLine(ex.Message);?
????????????????????????}?
????????????????}?
????????}?
}?