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
- Point4DValueSerializer.cs
- Queue.cs
- StylusPointPropertyId.cs
- UndoUnit.cs
- CompiledQueryCacheEntry.cs
- EmissiveMaterial.cs
- WebZone.cs
- XsltQilFactory.cs
- ConfigurationElementCollection.cs
- DataObjectCopyingEventArgs.cs
- Color.cs
- DrawingContext.cs
- ByteStreamGeometryContext.cs
- ParentQuery.cs
- WebPartsPersonalizationAuthorization.cs
- ArraySegment.cs
- TheQuery.cs
- DecimalConverter.cs
- DataAdapter.cs
- BoundPropertyEntry.cs
- DataConnectionHelper.cs
- Form.cs
- FrameworkTemplate.cs
- PolyQuadraticBezierSegment.cs
- Transform.cs
- SuppressIldasmAttribute.cs
- PolyLineSegmentFigureLogic.cs
- CollectionChangeEventArgs.cs
- ConfigPathUtility.cs
- StringConverter.cs
- TextStore.cs
- Thickness.cs
- WmpBitmapEncoder.cs
- DetailsViewPagerRow.cs
- RegexCaptureCollection.cs
- FrameworkContentElement.cs
- DataGridViewDataConnection.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- FontNamesConverter.cs
- ObjectCacheHost.cs
- WebPartCloseVerb.cs
- EntityDataSourceStatementEditorForm.cs
- securestring.cs
- OracleTransaction.cs
- InteropAutomationProvider.cs
- GridItemPattern.cs
- COM2IDispatchConverter.cs
- PolyQuadraticBezierSegment.cs
- ILGenerator.cs
- DataRecordInternal.cs
- ToolTip.cs
- TypeDependencyAttribute.cs
- GridToolTip.cs
- CharacterMetrics.cs
- CellParaClient.cs
- SingleAnimation.cs
- BrushMappingModeValidation.cs
- Win32.cs
- DataGridRelationshipRow.cs
- EdmMember.cs
- SamlAuthenticationStatement.cs
- ProcessModule.cs
- TextContainer.cs
- ReachSerializableProperties.cs
- CqlBlock.cs
- FrameworkReadOnlyPropertyMetadata.cs
- SortKey.cs
- BoundingRectTracker.cs
- XmlWellformedWriter.cs
- StylusButtonCollection.cs
- SystemNetworkInterface.cs
- BuildDependencySet.cs
- BitConverter.cs
- InsufficientMemoryException.cs
- VirtualPathUtility.cs
- StaticResourceExtension.cs
- Facet.cs
- StreamGeometry.cs
- ActionNotSupportedException.cs
- XmlQueryContext.cs
- SerialPinChanges.cs
- AssemblyCache.cs
- SHA1Cng.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- ConstructorExpr.cs
- ComponentResourceKey.cs
- ColorMap.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- WindowsIdentity.cs
- _AcceptOverlappedAsyncResult.cs
- SecurityMessageProperty.cs
- ScrollItemProviderWrapper.cs
- FrameSecurityDescriptor.cs
- RouteUrlExpressionBuilder.cs
- UnauthorizedWebPart.cs
- RSACryptoServiceProvider.cs
- GridViewCommandEventArgs.cs
- XmlSchemaSimpleContentRestriction.cs
- DataGridColumnCollectionEditor.cs