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
- CopyAction.cs
- RandomDelaySendsAsyncResult.cs
- ArraySortHelper.cs
- SpellerHighlightLayer.cs
- TabControl.cs
- TraceSwitch.cs
- Double.cs
- DataTemplateSelector.cs
- DefaultBinder.cs
- OpacityConverter.cs
- TimeSpanFormat.cs
- WebResourceAttribute.cs
- PKCS1MaskGenerationMethod.cs
- EntityConnection.cs
- FloaterParagraph.cs
- ArithmeticException.cs
- Stack.cs
- webeventbuffer.cs
- WriteLineDesigner.xaml.cs
- TouchDevice.cs
- TextSegment.cs
- ConnectionProviderAttribute.cs
- AttributeParameterInfo.cs
- InputBuffer.cs
- TimeSpan.cs
- DllHostInitializer.cs
- ListDictionaryInternal.cs
- LinearGradientBrush.cs
- ProviderUtil.cs
- WrappingXamlSchemaContext.cs
- PeerInvitationResponse.cs
- RegexStringValidator.cs
- MetaTableHelper.cs
- ImageInfo.cs
- DirectoryRedirect.cs
- ReadOnlyPropertyMetadata.cs
- PackageFilter.cs
- NativeMethods.cs
- SessionStateItemCollection.cs
- NavigationHelper.cs
- GeneralTransform3DCollection.cs
- ListViewItemSelectionChangedEvent.cs
- PropertyInfoSet.cs
- ForceCopyBuildProvider.cs
- SponsorHelper.cs
- ClientTargetCollection.cs
- RegionInfo.cs
- FixedBufferAttribute.cs
- ApplicationCommands.cs
- RadioButtonList.cs
- Size3D.cs
- VerticalAlignConverter.cs
- StorageMappingItemCollection.cs
- TextServicesDisplayAttribute.cs
- ConfigurationManagerHelperFactory.cs
- Viewport2DVisual3D.cs
- FormViewPageEventArgs.cs
- ElementInit.cs
- Function.cs
- VectorCollectionValueSerializer.cs
- CallbackTimeoutsBehavior.cs
- SafeEventLogWriteHandle.cs
- SecureConversationSecurityTokenParameters.cs
- Vector.cs
- SafeHandles.cs
- COM2ExtendedBrowsingHandler.cs
- DependencyPropertyKind.cs
- AnnotationService.cs
- WebPartsPersonalizationAuthorization.cs
- CodeRemoveEventStatement.cs
- FilterableAttribute.cs
- Pipe.cs
- EnumUnknown.cs
- WindowsPen.cs
- querybuilder.cs
- SequentialUshortCollection.cs
- HtmlTextArea.cs
- RunInstallerAttribute.cs
- Enum.cs
- WindowsAuthenticationModule.cs
- HandleCollector.cs
- MenuItem.cs
- InstanceCreationEditor.cs
- CaseExpr.cs
- FilterQuery.cs
- FreeFormDesigner.cs
- SharedDp.cs
- UTF7Encoding.cs
- Inflater.cs
- Group.cs
- GridSplitterAutomationPeer.cs
- JsonUriDataContract.cs
- ControllableStoryboardAction.cs
- LeafCellTreeNode.cs
- ObservableDictionary.cs
- WindowsPen.cs
- Timer.cs
- Attributes.cs
- RadioButton.cs
- SecurityRuntime.cs