Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- LeaseManager.cs
- JsonClassDataContract.cs
- LeafCellTreeNode.cs
- MasterPageBuildProvider.cs
- AssemblyBuilderData.cs
- SqlProcedureAttribute.cs
- ToolBarTray.cs
- VariableQuery.cs
- ImageDrawing.cs
- UriParserTemplates.cs
- ApplicationInterop.cs
- DataObjectAttribute.cs
- ControlBuilder.cs
- TypeExtensionConverter.cs
- SqlTopReducer.cs
- CloseCryptoHandleRequest.cs
- SiteMembershipCondition.cs
- RawStylusInputReport.cs
- ConnectionManagementElement.cs
- StyleXamlTreeBuilder.cs
- DrawingAttributeSerializer.cs
- CompilationPass2TaskInternal.cs
- DataStorage.cs
- ToolStripSeparator.cs
- AppDomainFactory.cs
- EntityKey.cs
- XmlSchemaComplexType.cs
- WarningException.cs
- DynamicObjectAccessor.cs
- DynamicQueryableWrapper.cs
- CodeGroup.cs
- ToolStripPanelRenderEventArgs.cs
- TextRangeAdaptor.cs
- CodeGeneratorOptions.cs
- Completion.cs
- TagPrefixCollection.cs
- ServiceModelConfigurationSectionGroup.cs
- SimpleType.cs
- BridgeDataReader.cs
- KnownTypeAttribute.cs
- XPathNavigatorReader.cs
- WpfWebRequestHelper.cs
- IDQuery.cs
- GeneralTransformGroup.cs
- SecurityUtils.cs
- ObjectContext.cs
- MLangCodePageEncoding.cs
- KeyInstance.cs
- QueueNameHelper.cs
- TypeHelper.cs
- SystemEvents.cs
- VectorCollection.cs
- SqlXmlStorage.cs
- COM2TypeInfoProcessor.cs
- HebrewNumber.cs
- ParentUndoUnit.cs
- CheckBoxStandardAdapter.cs
- ControlIdConverter.cs
- TextBox.cs
- XmlILOptimizerVisitor.cs
- XmlSchemaAttribute.cs
- SqlDataSourceCommandParser.cs
- ContextBase.cs
- RedirectionProxy.cs
- ThreadAbortException.cs
- SelectedDatesCollection.cs
- InternalPolicyElement.cs
- EvidenceTypeDescriptor.cs
- ReferenceEqualityComparer.cs
- MenuItem.cs
- ToolBarButton.cs
- XmlNodeChangedEventManager.cs
- WebPartConnectionsConfigureVerb.cs
- ListViewAutomationPeer.cs
- TreeNodeBindingDepthConverter.cs
- TypeGeneratedEventArgs.cs
- SqlUserDefinedTypeAttribute.cs
- ButtonColumn.cs
- UmAlQuraCalendar.cs
- DecimalAnimationUsingKeyFrames.cs
- UnsafeNativeMethodsTablet.cs
- AudioFileOut.cs
- IdentifierCollection.cs
- EpmSyndicationContentSerializer.cs
- BamlLocalizableResourceKey.cs
- TextSchema.cs
- DiagnosticStrings.cs
- BuildProviderAppliesToAttribute.cs
- SafeNativeMethodsOther.cs
- Paragraph.cs
- NetTcpBindingCollectionElement.cs
- MappingException.cs
- MetadataItemEmitter.cs
- DbMetaDataFactory.cs
- DataErrorValidationRule.cs
- ManipulationInertiaStartingEventArgs.cs
- InlinedAggregationOperator.cs
- SqlDataSourceConnectionPanel.cs
- IPPacketInformation.cs
- WebControlToolBoxItem.cs