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
- Item.cs
- GridViewCancelEditEventArgs.cs
- UIElementParaClient.cs
- FileUpload.cs
- __Filters.cs
- NameValueConfigurationElement.cs
- LineBreak.cs
- XmlObjectSerializerReadContextComplex.cs
- DataListItemCollection.cs
- SqlReferenceCollection.cs
- LogFlushAsyncResult.cs
- _OverlappedAsyncResult.cs
- SafeNativeMethods.cs
- ScrollViewerAutomationPeer.cs
- HierarchicalDataSourceControl.cs
- _PooledStream.cs
- HeaderedItemsControl.cs
- ImageMapEventArgs.cs
- PersonalizationProviderHelper.cs
- TrueReadOnlyCollection.cs
- TransactionException.cs
- ByteStack.cs
- DockPattern.cs
- WindowsTooltip.cs
- TableLayoutPanelResizeGlyph.cs
- SmtpClient.cs
- DataSourceCache.cs
- CollectionViewProxy.cs
- LinkLabelLinkClickedEvent.cs
- FormatterServices.cs
- XmlSignatureManifest.cs
- ADMembershipUser.cs
- MembershipSection.cs
- ProcessModelSection.cs
- FaultDesigner.cs
- DisplayInformation.cs
- newinstructionaction.cs
- DataGridViewSelectedRowCollection.cs
- SettingsAttributes.cs
- PasswordTextNavigator.cs
- EventQueueState.cs
- InstanceOwnerException.cs
- GrammarBuilderRuleRef.cs
- UnsafeNativeMethods.cs
- Configuration.cs
- TextServicesCompartmentContext.cs
- ExceptionTranslationTable.cs
- EncryptedReference.cs
- DetailsView.cs
- TraceHandler.cs
- XsdCachingReader.cs
- Line.cs
- DurableServiceAttribute.cs
- LambdaCompiler.ControlFlow.cs
- DbProviderFactories.cs
- ImageProxy.cs
- PagesSection.cs
- PropertyChangeTracker.cs
- Timer.cs
- ApplicationContext.cs
- FormParameter.cs
- XmlException.cs
- GroupItemAutomationPeer.cs
- InputLangChangeRequestEvent.cs
- BufferedGraphics.cs
- BuildManager.cs
- RawStylusInputCustomData.cs
- IndexExpression.cs
- XdrBuilder.cs
- FastEncoderWindow.cs
- Label.cs
- AutoResetEvent.cs
- WindowsIdentity.cs
- wgx_exports.cs
- Label.cs
- AuthenticodeSignatureInformation.cs
- KeyToListMap.cs
- ClassicBorderDecorator.cs
- DataBoundControlAdapter.cs
- AttributeCollection.cs
- ComponentGlyph.cs
- SQLDateTimeStorage.cs
- CompositeCollection.cs
- validationstate.cs
- EditorZone.cs
- MetadataUtilsSmi.cs
- SkewTransform.cs
- ColorAnimation.cs
- FormViewDeleteEventArgs.cs
- XslVisitor.cs
- StateBag.cs
- AsyncCompletedEventArgs.cs
- Clause.cs
- HtmlInputImage.cs
- PersonalizationEntry.cs
- EntityCodeGenerator.cs
- ConfigurationStrings.cs
- InputLanguageSource.cs
- HtmlInputRadioButton.cs
- TimeEnumHelper.cs