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
- JpegBitmapDecoder.cs
- PrinterResolution.cs
- EncryptedKey.cs
- SmiRecordBuffer.cs
- ObjectListField.cs
- MessageQueueKey.cs
- AdvancedBindingEditor.cs
- SupportingTokenSpecification.cs
- CodeChecksumPragma.cs
- ToolStripScrollButton.cs
- RadioButton.cs
- brushes.cs
- Util.cs
- CfgParser.cs
- DSASignatureFormatter.cs
- DesignerHelpers.cs
- SqlCachedBuffer.cs
- ProxyGenerator.cs
- EmbeddedMailObjectsCollection.cs
- SecurityContextKeyIdentifierClause.cs
- ThreadAttributes.cs
- HttpCapabilitiesEvaluator.cs
- ClrPerspective.cs
- ToolStripDropDownClosedEventArgs.cs
- SqlCacheDependencySection.cs
- TableCell.cs
- EncryptedPackage.cs
- XmlSerializerFactory.cs
- TextSpan.cs
- httpstaticobjectscollection.cs
- QilFunction.cs
- Int32Collection.cs
- TcpClientSocketManager.cs
- WpfSharedBamlSchemaContext.cs
- CompiledQueryCacheEntry.cs
- Pkcs7Signer.cs
- ThaiBuddhistCalendar.cs
- XmlHierarchicalEnumerable.cs
- ExtenderProvidedPropertyAttribute.cs
- GridViewCommandEventArgs.cs
- ObjectStateManagerMetadata.cs
- TableCell.cs
- EmptyStringExpandableObjectConverter.cs
- ContractHandle.cs
- DispatcherBuilder.cs
- ToolStripSystemRenderer.cs
- DeviceContext.cs
- ToolStripGrip.cs
- SignalGate.cs
- EdmFunction.cs
- MarkupWriter.cs
- ConstNode.cs
- Point3DValueSerializer.cs
- RectAnimationUsingKeyFrames.cs
- MetadataProperty.cs
- ImageKeyConverter.cs
- CryptoKeySecurity.cs
- ConnectionStringsExpressionBuilder.cs
- TraceContext.cs
- ContextInformation.cs
- SmiXetterAccessMap.cs
- HWStack.cs
- glyphs.cs
- FontUnitConverter.cs
- ToolboxDataAttribute.cs
- CompilerWrapper.cs
- SqlDataSourceStatusEventArgs.cs
- XpsFontSubsetter.cs
- TextBox.cs
- ReadWriteControlDesigner.cs
- BaseParagraph.cs
- SQLByte.cs
- HealthMonitoringSectionHelper.cs
- GeneralTransformGroup.cs
- ConvertersCollection.cs
- XmlAggregates.cs
- CurrencyWrapper.cs
- ContextProperty.cs
- CommandDesigner.cs
- LogicalExpr.cs
- XamlReaderHelper.cs
- BulletDecorator.cs
- HttpListener.cs
- Rotation3DAnimationUsingKeyFrames.cs
- ListMarkerSourceInfo.cs
- UnsafeNativeMethodsMilCoreApi.cs
- __Filters.cs
- ApplicationContext.cs
- EpmSyndicationContentSerializer.cs
- PasswordPropertyTextAttribute.cs
- MultiPropertyDescriptorGridEntry.cs
- HandlerBase.cs
- PolicyValidationException.cs
- TransactionTraceIdentifier.cs
- X509CertificateChain.cs
- DrawingContextWalker.cs
- TextAnchor.cs
- DataGridAutoFormat.cs
- ThreadExceptionEvent.cs
- ComponentEditorPage.cs