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
- GradientBrush.cs
- ConstructorNeedsTagAttribute.cs
- OleDbConnectionInternal.cs
- ObjectDataSourceView.cs
- Hex.cs
- StringBuilder.cs
- NativeWindow.cs
- PreviewPrintController.cs
- SyndicationDeserializer.cs
- KeyInterop.cs
- OdbcParameterCollection.cs
- QilPatternFactory.cs
- InputBuffer.cs
- WeakReferenceEnumerator.cs
- FirstMatchCodeGroup.cs
- _LocalDataStore.cs
- SecurityManager.cs
- ImageListStreamer.cs
- DeviceContext.cs
- NetMsmqBindingCollectionElement.cs
- ObjectDataSourceMethodEventArgs.cs
- GorillaCodec.cs
- ThrowHelper.cs
- FormViewInsertEventArgs.cs
- CreateParams.cs
- UIElementCollection.cs
- precedingsibling.cs
- ConfigXmlReader.cs
- HwndTarget.cs
- BamlMapTable.cs
- FileRecordSequenceHelper.cs
- DataGridViewRowPostPaintEventArgs.cs
- DiscoveryDocumentReference.cs
- FixedSOMTable.cs
- PropertyOverridesDialog.cs
- URLString.cs
- XmlCodeExporter.cs
- TerminatorSinks.cs
- WaitHandleCannotBeOpenedException.cs
- BoolExpressionVisitors.cs
- OverflowException.cs
- PluralizationServiceUtil.cs
- XmlSchemaResource.cs
- RuntimeConfigLKG.cs
- XmlSiteMapProvider.cs
- BuildProviderInstallComponent.cs
- HttpHandlerActionCollection.cs
- MediaCommands.cs
- MetadataUtilsSmi.cs
- FileDialogPermission.cs
- TabItemWrapperAutomationPeer.cs
- SecurityHeader.cs
- SocketException.cs
- ElementAtQueryOperator.cs
- IApplicationTrustManager.cs
- Compress.cs
- DeferredSelectedIndexReference.cs
- HttpApplication.cs
- DataServiceRequestArgs.cs
- SessionEndingCancelEventArgs.cs
- InheritanceAttribute.cs
- DispatcherHookEventArgs.cs
- BindingsCollection.cs
- MessageDescription.cs
- ResourceDescriptionAttribute.cs
- XsdCachingReader.cs
- MenuItem.cs
- HostedAspNetEnvironment.cs
- ExpressionNode.cs
- PropVariant.cs
- ECDiffieHellmanCngPublicKey.cs
- MetadataArtifactLoaderCompositeResource.cs
- CodeCompiler.cs
- Subtract.cs
- HttpAsyncResult.cs
- DataFormat.cs
- CodeExpressionStatement.cs
- CatalogZoneDesigner.cs
- MatrixTransform3D.cs
- MethodToken.cs
- SystemResourceHost.cs
- MenuStrip.cs
- Control.cs
- DetailsViewPagerRow.cs
- CodeVariableReferenceExpression.cs
- NodeFunctions.cs
- GradientSpreadMethodValidation.cs
- UndoUnit.cs
- WebPartConnectionsCancelEventArgs.cs
- Emitter.cs
- PropertyValueUIItem.cs
- GregorianCalendarHelper.cs
- OracleBoolean.cs
- documentsequencetextview.cs
- codemethodreferenceexpression.cs
- KerberosSecurityTokenProvider.cs
- SafeFileMappingHandle.cs
- CodeParameterDeclarationExpressionCollection.cs
- Tokenizer.cs
- PngBitmapEncoder.cs