Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / ReaderWriterLockWrapper.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DetailsViewDesigner.cs
- TextTreeNode.cs
- PathFigureCollection.cs
- FixedTextPointer.cs
- AppDomainProtocolHandler.cs
- SymmetricAlgorithm.cs
- InvalidProgramException.cs
- BitmapInitialize.cs
- ProgressBarAutomationPeer.cs
- SqlAggregateChecker.cs
- EventSinkHelperWriter.cs
- RefreshResponseInfo.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- RMPermissions.cs
- ParserOptions.cs
- AQNBuilder.cs
- MergablePropertyAttribute.cs
- StreamGeometry.cs
- PolicyConversionContext.cs
- TimeoutHelper.cs
- CellParagraph.cs
- columnmapkeybuilder.cs
- WebPartEditorOkVerb.cs
- GeometryCollection.cs
- ManifestResourceInfo.cs
- ConsoleEntryPoint.cs
- CollectionChangedEventManager.cs
- SqlClientFactory.cs
- DeflateEmulationStream.cs
- MarkupProperty.cs
- Error.cs
- RangeValidator.cs
- DataControlPagerLinkButton.cs
- TypeBuilderInstantiation.cs
- FileCodeGroup.cs
- MsmqChannelFactory.cs
- ChangeConflicts.cs
- Attributes.cs
- unsafenativemethodsother.cs
- GeometryModel3D.cs
- SessionPageStatePersister.cs
- ProgressPage.cs
- DetailsViewUpdatedEventArgs.cs
- ScriptRef.cs
- COM2PictureConverter.cs
- HttpWebResponse.cs
- DodSequenceMerge.cs
- TextBoxDesigner.cs
- DurableInstance.cs
- ScriptMethodAttribute.cs
- AggregateNode.cs
- CommandManager.cs
- SQLInt16.cs
- TimeoutHelper.cs
- _OverlappedAsyncResult.cs
- RayHitTestParameters.cs
- Control.cs
- DataServiceExpressionVisitor.cs
- CommandTreeTypeHelper.cs
- DataGridView.cs
- DelayDesigner.cs
- CanonicalXml.cs
- StreamSecurityUpgradeInitiator.cs
- IInstanceContextProvider.cs
- LinqDataSource.cs
- EventWaitHandleSecurity.cs
- IndexerNameAttribute.cs
- AddIn.cs
- GlyphInfoList.cs
- SqlCacheDependencyDatabase.cs
- ValidationVisibilityAttribute.cs
- TemplatePagerField.cs
- TransactionManager.cs
- WebRequestModuleElementCollection.cs
- LinqDataSourceValidationException.cs
- ThreadStartException.cs
- ValidationHelpers.cs
- ExpressionNode.cs
- ToolConsole.cs
- HiddenField.cs
- MultiAsyncResult.cs
- XmlDownloadManager.cs
- CodeAttachEventStatement.cs
- SynchronizationLockException.cs
- Bezier.cs
- Vector3DAnimationUsingKeyFrames.cs
- ResumeStoryboard.cs
- AccessControlList.cs
- AspNetSynchronizationContext.cs
- remotingproxy.cs
- documentation.cs
- X509SecurityTokenAuthenticator.cs
- TemplateControlParser.cs
- CodeDomConfigurationHandler.cs
- SiteMapNode.cs
- InvalidPrinterException.cs
- MultiByteCodec.cs
- ColumnReorderedEventArgs.cs
- XmlSchemaFacet.cs
- MorphHelper.cs