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
- DataGridHeadersVisibilityToVisibilityConverter.cs
- XD.cs
- TimeoutValidationAttribute.cs
- Wildcard.cs
- XamlFigureLengthSerializer.cs
- RequestResizeEvent.cs
- PluggableProtocol.cs
- UpdatePanelTrigger.cs
- ToolCreatedEventArgs.cs
- CodeNamespaceImport.cs
- CustomBindingCollectionElement.cs
- NumberSubstitution.cs
- ProcessHostFactoryHelper.cs
- Pair.cs
- GcSettings.cs
- ExpressionLexer.cs
- StyleSelector.cs
- StructuredType.cs
- BufferedGraphicsManager.cs
- SymbolPair.cs
- SchemaMapping.cs
- FlowLayoutPanel.cs
- ManualResetEvent.cs
- XmlNotation.cs
- SafeNativeMethods.cs
- HttpContextBase.cs
- _KerberosClient.cs
- SafeCryptoHandles.cs
- DecimalStorage.cs
- TileBrush.cs
- SingleKeyFrameCollection.cs
- XmlSchemaSimpleContentExtension.cs
- XmlSchemaException.cs
- StylusDevice.cs
- TagMapCollection.cs
- HtmlAnchor.cs
- CopyCodeAction.cs
- Font.cs
- EventLogEntry.cs
- ConnectionManagementSection.cs
- DomNameTable.cs
- ComplexBindingPropertiesAttribute.cs
- documentsequencetextpointer.cs
- TeredoHelper.cs
- FollowerQueueCreator.cs
- ProvidePropertyAttribute.cs
- UInt16.cs
- TypefaceMap.cs
- LongValidatorAttribute.cs
- SuspendDesigner.cs
- BindableTemplateBuilder.cs
- OrthographicCamera.cs
- Tablet.cs
- PolicyException.cs
- storepermissionattribute.cs
- CompressEmulationStream.cs
- Util.cs
- xsdvalidator.cs
- ForceCopyBuildProvider.cs
- TrackingRecord.cs
- MsmqUri.cs
- WebPartDisplayModeCancelEventArgs.cs
- DataMisalignedException.cs
- ClientRuntimeConfig.cs
- CorrelationResolver.cs
- TableMethodGenerator.cs
- ApplicationBuildProvider.cs
- TypeUtil.cs
- Parameter.cs
- DataExpression.cs
- ValidationResult.cs
- ExpressionConverter.cs
- PersistChildrenAttribute.cs
- TextEvent.cs
- ImageBrush.cs
- PropertyStore.cs
- MdiWindowListStrip.cs
- odbcmetadatafactory.cs
- DataColumnCollection.cs
- EncoderNLS.cs
- SrgsNameValueTag.cs
- ThreadExceptionDialog.cs
- ToolStripOverflowButton.cs
- StrongNameMembershipCondition.cs
- MostlySingletonList.cs
- ExpressionVisitor.cs
- SourceFilter.cs
- ToolboxItemImageConverter.cs
- SingleResultAttribute.cs
- EventListenerClientSide.cs
- Registry.cs
- Parameter.cs
- GlyphCache.cs
- RtfToXamlReader.cs
- CodeParameterDeclarationExpression.cs
- JoinSymbol.cs
- ProviderUtil.cs
- HMACSHA1.cs
- UriWriter.cs
- HttpModuleCollection.cs