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
- QuerySelectOp.cs
- FieldToken.cs
- ValidateNames.cs
- SapiRecoContext.cs
- XamlRtfConverter.cs
- SerializationFieldInfo.cs
- RayHitTestParameters.cs
- MetricEntry.cs
- XmlStreamStore.cs
- COM2Properties.cs
- MarkupExtensionReturnTypeAttribute.cs
- HttpStaticObjectsCollectionWrapper.cs
- XmlReflectionImporter.cs
- DataControlCommands.cs
- DataControlImageButton.cs
- RotateTransform.cs
- HierarchicalDataTemplate.cs
- DataBinding.cs
- SqlTriggerAttribute.cs
- InputScope.cs
- CommandBindingCollection.cs
- FrameworkRichTextComposition.cs
- BrowserInteropHelper.cs
- NumericPagerField.cs
- MetroSerializationManager.cs
- BeginStoryboard.cs
- SerializationSectionGroup.cs
- ResourcesChangeInfo.cs
- RolePrincipal.cs
- XmlAttributes.cs
- SerializationEventsCache.cs
- TransactionManager.cs
- DesignerDataColumn.cs
- ToolTip.cs
- OleDbCommandBuilder.cs
- SchemaImporter.cs
- ObjRef.cs
- SecUtil.cs
- TextRangeEdit.cs
- WebConfigurationHostFileChange.cs
- IndexOutOfRangeException.cs
- DataColumnChangeEvent.cs
- Base64Stream.cs
- AuditLogLocation.cs
- Vector3DConverter.cs
- TemplateInstanceAttribute.cs
- WindowsHyperlink.cs
- PngBitmapDecoder.cs
- GridItemPattern.cs
- ContextStaticAttribute.cs
- FormatterServices.cs
- DataQuery.cs
- TdsEnums.cs
- WebPartMenuStyle.cs
- StylusEditingBehavior.cs
- BitmapEffectOutputConnector.cs
- XmlBoundElement.cs
- HtmlAnchor.cs
- Pool.cs
- UnauthorizedWebPart.cs
- AutomationIdentifierGuids.cs
- FusionWrap.cs
- SqlServer2KCompatibilityCheck.cs
- ManualWorkflowSchedulerService.cs
- DataGridPageChangedEventArgs.cs
- FontStretchConverter.cs
- DifferencingCollection.cs
- PenLineJoinValidation.cs
- StyleCollection.cs
- RegionInfo.cs
- CompiledQueryCacheKey.cs
- odbcmetadatacollectionnames.cs
- IndentedWriter.cs
- SqlDataSourceView.cs
- TreeNode.cs
- BrowserTree.cs
- PlatformNotSupportedException.cs
- CustomCategoryAttribute.cs
- TreeNodeStyleCollectionEditor.cs
- EventDriven.cs
- Cursor.cs
- CompositeFontParser.cs
- CheckPair.cs
- ContentFileHelper.cs
- StandardToolWindows.cs
- ParsedAttributeCollection.cs
- Context.cs
- GeneralTransformCollection.cs
- PrivateFontCollection.cs
- Stacktrace.cs
- CompoundFileStreamReference.cs
- XmlCodeExporter.cs
- WebControl.cs
- TemplateXamlParser.cs
- SqlNodeTypeOperators.cs
- TypeConverterAttribute.cs
- Tokenizer.cs
- ProtocolsConfiguration.cs
- DBDataPermissionAttribute.cs
- AuditLevel.cs