Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------------- // //// 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
- LoginUtil.cs
- DeferredTextReference.cs
- WsdlParser.cs
- CompareValidator.cs
- PhoneCallDesigner.cs
- TransformValueSerializer.cs
- COM2Properties.cs
- _KerberosClient.cs
- ServiceOperation.cs
- ListViewDeletedEventArgs.cs
- CopyOnWriteList.cs
- rsa.cs
- AccessDataSourceView.cs
- PerfCounters.cs
- XDeferredAxisSource.cs
- XhtmlTextWriter.cs
- DataObjectPastingEventArgs.cs
- streamingZipPartStream.cs
- XPathNodeList.cs
- InputProviderSite.cs
- AddInToken.cs
- X509Utils.cs
- DiscoveryExceptionDictionary.cs
- JournalEntryListConverter.cs
- PolicyException.cs
- ISAPIRuntime.cs
- TextBox.cs
- Context.cs
- DataServiceContext.cs
- WebPartPersonalization.cs
- MouseGestureConverter.cs
- CodeEntryPointMethod.cs
- XmlNode.cs
- PathNode.cs
- XamlUtilities.cs
- XmlName.cs
- DiscoveryInnerClientAdhocCD1.cs
- HashStream.cs
- StyleSheetComponentEditor.cs
- coordinatorscratchpad.cs
- SafeTokenHandle.cs
- WpfPayload.cs
- DoubleAnimationUsingKeyFrames.cs
- BitmapDownload.cs
- Filter.cs
- PrintDocument.cs
- SiteMapDataSourceView.cs
- StrokeCollection.cs
- SizeAnimationUsingKeyFrames.cs
- EntityCommandCompilationException.cs
- XMLSyntaxException.cs
- Vector3dCollection.cs
- EnumMemberAttribute.cs
- StringBuilder.cs
- ErrorFormatterPage.cs
- Condition.cs
- CodeNamespaceImportCollection.cs
- CFGGrammar.cs
- XmlSchemaComplexType.cs
- GradientStopCollection.cs
- CredentialCache.cs
- Int64KeyFrameCollection.cs
- LambdaCompiler.Address.cs
- Statements.cs
- LOSFormatter.cs
- EdgeModeValidation.cs
- TextUtf8RawTextWriter.cs
- Frame.cs
- FileUtil.cs
- MarginCollapsingState.cs
- Crypto.cs
- TableItemProviderWrapper.cs
- FSWPathEditor.cs
- VolatileEnlistmentMultiplexing.cs
- SplitterEvent.cs
- SqlGatherProducedAliases.cs
- OutputScope.cs
- SpecialNameAttribute.cs
- PrivilegeNotHeldException.cs
- PropertyEmitterBase.cs
- TimeManager.cs
- OperationPerformanceCounters.cs
- PropertyState.cs
- VsPropertyGrid.cs
- PolicyVersion.cs
- IEnumerable.cs
- SizeIndependentAnimationStorage.cs
- SmiEventStream.cs
- GroupBoxRenderer.cs
- ButtonFieldBase.cs
- BitmapEffect.cs
- StreamWithDictionary.cs
- ProfileSettings.cs
- CustomAssemblyResolver.cs
- ToolStripAdornerWindowService.cs
- AuthenticationService.cs
- TimeIntervalCollection.cs
- MonitoringDescriptionAttribute.cs
- StdValidatorsAndConverters.cs
- AccessViolationException.cs