Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Shared / MS / Internal / ReaderWriterLockWrapper.cs / 1 / ReaderWriterLockWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: // Wrapper that allows a ReaderWriterLock to work with C#'s using() clause // // History: // 07/23/2003 : BrendanM Ported to WCP // //--------------------------------------------------------------------------- using System; using System.Threading; using MS.Internal.WindowsBase; namespace MS.Internal { // Wrapper that allows a ReaderWriterLock to work with C#'s using() clause [FriendAccessAllowed] // Built into Base, used by Core and Framework. internal class ReaderWriterLockWrapper { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal ReaderWriterLockWrapper() { _rwLock = new ReaderWriterLock(); _awr = new AutoWriterRelease(_rwLock); _arr = new AutoReaderRelease(_rwLock); } #endregion Constructors //------------------------------------------------------ // // Internal Properties // //----------------------------------------------------- #region Internal Properties internal IDisposable WriteLock { get { _rwLock.AcquireWriterLock(Timeout.Infinite); return _awr; } } internal IDisposable ReadLock { get { _rwLock.AcquireReaderLock(Timeout.Infinite); return _arr; } } #endregion Internal Properties //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ #region Private Fields private ReaderWriterLock _rwLock; private AutoReaderRelease _arr; private AutoWriterRelease _awr; #endregion Private Fields //----------------------------------------------------- // // Private Classes & Structs // //------------------------------------------------------ #region Private Classes & Structs private struct AutoWriterRelease : IDisposable { public AutoWriterRelease(ReaderWriterLock rwLock) { _lock = rwLock; } public void Dispose() { _lock.ReleaseWriterLock(); } private ReaderWriterLock _lock; } private struct AutoReaderRelease : IDisposable { public AutoReaderRelease(ReaderWriterLock rwLock) { _lock = rwLock; } public void Dispose() { _lock.ReleaseReaderLock(); } private ReaderWriterLock _lock; } #endregion Private Classes } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: // Wrapper that allows a ReaderWriterLock to work with C#'s using() clause // // History: // 07/23/2003 : BrendanM Ported to WCP // //--------------------------------------------------------------------------- using System; using System.Threading; using MS.Internal.WindowsBase; namespace MS.Internal { // Wrapper that allows a ReaderWriterLock to work with C#'s using() clause [FriendAccessAllowed] // Built into Base, used by Core and Framework. internal class ReaderWriterLockWrapper { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal ReaderWriterLockWrapper() { _rwLock = new ReaderWriterLock(); _awr = new AutoWriterRelease(_rwLock); _arr = new AutoReaderRelease(_rwLock); } #endregion Constructors //------------------------------------------------------ // // Internal Properties // //----------------------------------------------------- #region Internal Properties internal IDisposable WriteLock { get { _rwLock.AcquireWriterLock(Timeout.Infinite); return _awr; } } internal IDisposable ReadLock { get { _rwLock.AcquireReaderLock(Timeout.Infinite); return _arr; } } #endregion Internal Properties //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ #region Private Fields private ReaderWriterLock _rwLock; private AutoReaderRelease _arr; private AutoWriterRelease _awr; #endregion Private Fields //----------------------------------------------------- // // Private Classes & Structs // //------------------------------------------------------ #region Private Classes & Structs private struct AutoWriterRelease : IDisposable { public AutoWriterRelease(ReaderWriterLock rwLock) { _lock = rwLock; } public void Dispose() { _lock.ReleaseWriterLock(); } private ReaderWriterLock _lock; } private struct AutoReaderRelease : IDisposable { public AutoReaderRelease(ReaderWriterLock rwLock) { _lock = rwLock; } public void Dispose() { _lock.ReleaseReaderLock(); } private ReaderWriterLock _lock; } #endregion Private Classes } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PageParserFilter.cs
- ResourceFallbackManager.cs
- DataRowChangeEvent.cs
- MsmqDecodeHelper.cs
- FixedLineResult.cs
- DispatcherHookEventArgs.cs
- RouteValueDictionary.cs
- EditorZoneDesigner.cs
- HttpRuntimeSection.cs
- PermissionSetTriple.cs
- WinInetCache.cs
- Point4DValueSerializer.cs
- SoapAttributeAttribute.cs
- CurrentTimeZone.cs
- BasePropertyDescriptor.cs
- LocationReference.cs
- DecimalAnimation.cs
- SizeFConverter.cs
- SafeThemeHandle.cs
- future.cs
- MergeFailedEvent.cs
- TimeEnumHelper.cs
- ISCIIEncoding.cs
- BindingMAnagerBase.cs
- UInt64Storage.cs
- WindowsGraphics.cs
- ThreadSafeList.cs
- PopupControlService.cs
- MembershipPasswordException.cs
- Workspace.cs
- cryptoapiTransform.cs
- SystemIPAddressInformation.cs
- UnsafeNativeMethods.cs
- PreservationFileWriter.cs
- LifetimeServices.cs
- EventLogPermissionAttribute.cs
- SQLInt16Storage.cs
- RSAProtectedConfigurationProvider.cs
- MeshGeometry3D.cs
- LifetimeServices.cs
- QuaternionAnimationBase.cs
- TextDecorations.cs
- mediaclock.cs
- Base64Encoder.cs
- DataColumnCollection.cs
- TextEndOfLine.cs
- DocumentCollection.cs
- MsmqTransportSecurityElement.cs
- ButtonBaseAutomationPeer.cs
- DecoderBestFitFallback.cs
- RemotingConfiguration.cs
- ColorConverter.cs
- Filter.cs
- DataGridViewButtonCell.cs
- ClientCultureInfo.cs
- ListViewSortEventArgs.cs
- ReadOnlyCollection.cs
- DocumentApplicationJournalEntry.cs
- DataGridViewRowPostPaintEventArgs.cs
- DbConnectionPoolIdentity.cs
- bidPrivateBase.cs
- XmlComment.cs
- XmlObjectSerializerWriteContextComplex.cs
- NonBatchDirectoryCompiler.cs
- XmlEntity.cs
- SQLRoleProvider.cs
- XPathExpr.cs
- CodeIterationStatement.cs
- ShellProvider.cs
- CompModSwitches.cs
- WinInet.cs
- WebPartConnectionsCancelVerb.cs
- SingleStorage.cs
- DataColumnMappingCollection.cs
- ProcessModule.cs
- RepeatButtonAutomationPeer.cs
- SmiSettersStream.cs
- ToolboxComponentsCreatingEventArgs.cs
- ConnectionAcceptor.cs
- SafeTokenHandle.cs
- SqlMethodCallConverter.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- QuaternionConverter.cs
- PageDeviceFont.cs
- CurrencyWrapper.cs
- StickyNoteAnnotations.cs
- Delegate.cs
- CharacterShapingProperties.cs
- HashHelper.cs
- Image.cs
- ReadContentAsBinaryHelper.cs
- VersionPair.cs
- ViewGenResults.cs
- QueryRewriter.cs
- SqlBuilder.cs
- FormViewUpdateEventArgs.cs
- PrimitiveRenderer.cs
- ReverseComparer.cs
- TimersDescriptionAttribute.cs
- DependencyObjectPropertyDescriptor.cs