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
- VisualTreeHelper.cs
- TargetParameterCountException.cs
- StructuredProperty.cs
- InstanceKeyView.cs
- HttpGetServerProtocol.cs
- Scanner.cs
- HTTPNotFoundHandler.cs
- RedirectionProxy.cs
- MessageDroppedTraceRecord.cs
- XmlSchemaSequence.cs
- Image.cs
- ToolBar.cs
- NewArrayExpression.cs
- TwoPhaseCommit.cs
- ControlType.cs
- ManagementQuery.cs
- Oid.cs
- AutomationPropertyInfo.cs
- GroupItemAutomationPeer.cs
- UICuesEvent.cs
- BinaryParser.cs
- FixedPage.cs
- TrackBarRenderer.cs
- AspNetHostingPermission.cs
- MimeParameter.cs
- MSHTMLHost.cs
- TextEndOfSegment.cs
- SystemResources.cs
- MachineKeySection.cs
- DataGridAddNewRow.cs
- HtmlInputText.cs
- UserUseLicenseDictionaryLoader.cs
- RelationshipEntry.cs
- RequestedSignatureDialog.cs
- DuplicateWaitObjectException.cs
- CodeTypeDelegate.cs
- WindowsTab.cs
- CqlIdentifiers.cs
- ObjectSecurity.cs
- PrivacyNoticeElement.cs
- TextHintingModeValidation.cs
- ToolStripItemTextRenderEventArgs.cs
- HotSpot.cs
- DynamicPropertyReader.cs
- TableItemStyle.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- EventEntry.cs
- BlockUIContainer.cs
- GACMembershipCondition.cs
- Table.cs
- TransactedBatchContext.cs
- PerformanceCounterLib.cs
- ConstraintEnumerator.cs
- DropShadowBitmapEffect.cs
- PropertyToken.cs
- LoginName.cs
- XMLUtil.cs
- MetadataFile.cs
- CollectionViewSource.cs
- XmlObjectSerializerContext.cs
- WebServiceTypeData.cs
- BooleanSwitch.cs
- HttpWebRequestElement.cs
- ConfigXmlComment.cs
- LockedBorderGlyph.cs
- SqlDataRecord.cs
- ServiceObjectContainer.cs
- RegionInfo.cs
- DataGridDetailsPresenter.cs
- Scripts.cs
- EdgeModeValidation.cs
- WebPartEditorOkVerb.cs
- StorageComplexPropertyMapping.cs
- OpenTypeCommon.cs
- BufferedStream.cs
- DESCryptoServiceProvider.cs
- GridViewEditEventArgs.cs
- AppDomainUnloadedException.cs
- PartitionedStream.cs
- PathFigureCollection.cs
- SoapProtocolImporter.cs
- TimeIntervalCollection.cs
- AbsoluteQuery.cs
- DbConnectionInternal.cs
- CustomLineCap.cs
- AttributeCollection.cs
- RIPEMD160.cs
- ValueConversionAttribute.cs
- SmtpCommands.cs
- SaveFileDialog.cs
- IIS7WorkerRequest.cs
- ReadOnlyMetadataCollection.cs
- OdbcFactory.cs
- CacheRequest.cs
- MetadataArtifactLoaderResource.cs
- TcpServerChannel.cs
- SymmetricAlgorithm.cs
- SecurityContext.cs
- PropertyInformationCollection.cs
- Codec.cs