public void ApplyModificationIfNeeded(IRomByte romByte) { romByte.Lock.EnterUpgradeableReadLock(); try { CompareToExisting(romByte); if (changed) { ApplyModification(romByte); } } finally { romByte.Lock.ExitUpgradeableReadLock(); } }
// precondition: rombyte (minimum of) read lock already acquired private void ApplyModification(IRomByte romByte) { romByte.Lock.EnterWriteLock(); try { romByte.TypeFlag = FlagType; romByte.DataBank = (byte)DataBank; romByte.DirectPage = 0xFFFF & DirectPage; romByte.XFlag = XFlagSet; romByte.MFlag = MFlagSet; } finally { romByte.Lock.ExitWriteLock(); } }