Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- XmlValidatingReader.cs
- StackSpiller.Bindings.cs
- UpDownBase.cs
- TypeConverterHelper.cs
- KeyboardEventArgs.cs
- RadioButtonList.cs
- TraceProvider.cs
- XmlHierarchicalDataSourceView.cs
- SizeAnimationBase.cs
- DescendantQuery.cs
- CroppedBitmap.cs
- CompilationLock.cs
- SystemIPAddressInformation.cs
- DiscoveryDefaults.cs
- PointHitTestParameters.cs
- CancellationState.cs
- SizeAnimationUsingKeyFrames.cs
- LayoutEngine.cs
- PrintPreviewGraphics.cs
- HandlerFactoryCache.cs
- HttpListenerRequest.cs
- SafeRegistryKey.cs
- ToolStripContentPanelDesigner.cs
- QilInvokeLateBound.cs
- VectorCollectionValueSerializer.cs
- AspProxy.cs
- DefaultAutoFieldGenerator.cs
- ZipIOExtraFieldElement.cs
- SetterBaseCollection.cs
- OdbcRowUpdatingEvent.cs
- UserControl.cs
- HierarchicalDataBoundControl.cs
- RightsManagementPermission.cs
- RegexStringValidatorAttribute.cs
- FillRuleValidation.cs
- relpropertyhelper.cs
- TableAdapterManagerMethodGenerator.cs
- RunClient.cs
- Point3DKeyFrameCollection.cs
- DecimalConstantAttribute.cs
- XmlAttributeCollection.cs
- RequestTimeoutManager.cs
- ArraySubsetEnumerator.cs
- ContainsRowNumberChecker.cs
- VariantWrapper.cs
- FontConverter.cs
- X509ScopedServiceCertificateElementCollection.cs
- SystemIPAddressInformation.cs
- StructuredType.cs
- ExceptionNotification.cs
- MostlySingletonList.cs
- NaturalLanguageHyphenator.cs
- StaticExtension.cs
- RecordBuilder.cs
- PtsHelper.cs
- SizeKeyFrameCollection.cs
- TimelineClockCollection.cs
- CacheSection.cs
- SeekableMessageNavigator.cs
- GifBitmapEncoder.cs
- TextContainerHelper.cs
- OleDbEnumerator.cs
- XmlUnspecifiedAttribute.cs
- CodeTypeDelegate.cs
- ApplicationFileParser.cs
- StylusPointProperty.cs
- UIElementIsland.cs
- AttachedPropertyDescriptor.cs
- ResolvedKeyFrameEntry.cs
- _WebProxyDataBuilder.cs
- KeyedHashAlgorithm.cs
- SortQuery.cs
- URLMembershipCondition.cs
- ThemeDictionaryExtension.cs
- EventProvider.cs
- TimeZoneNotFoundException.cs
- WebPartZoneCollection.cs
- BitmapEffectRenderDataResource.cs
- RawAppCommandInputReport.cs
- DBBindings.cs
- Decorator.cs
- HttpListenerContext.cs
- WebServiceTypeData.cs
- XmlSchemaDocumentation.cs
- BooleanStorage.cs
- TextDecorationCollection.cs
- OrderByExpression.cs
- ContextDataSource.cs
- Effect.cs
- StrokeNodeOperations.cs
- JsonObjectDataContract.cs
- Triangle.cs
- AttachInfo.cs
- Soap.cs
- IdSpace.cs
- __Filters.cs
- EventLogPermissionHolder.cs
- ResourcesBuildProvider.cs
- CompositeFontInfo.cs
- FixedSOMTableCell.cs