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
- SqlUdtInfo.cs
- CompilerGeneratedAttribute.cs
- PropertyGeneratedEventArgs.cs
- ProvideValueServiceProvider.cs
- OleDbException.cs
- SerTrace.cs
- oledbmetadatacolumnnames.cs
- EntityDataSourceWrapper.cs
- ExpressionEditorAttribute.cs
- DataGridViewControlCollection.cs
- SHA512Managed.cs
- RepeatInfo.cs
- EndpointNameMessageFilter.cs
- WebConfigurationFileMap.cs
- TableSectionStyle.cs
- SynchronizationLockException.cs
- Funcletizer.cs
- CommentEmitter.cs
- QuaternionConverter.cs
- PeerApplication.cs
- WindowCollection.cs
- SQLSingle.cs
- SortableBindingList.cs
- GlyphShapingProperties.cs
- Funcletizer.cs
- CodePrimitiveExpression.cs
- Psha1DerivedKeyGenerator.cs
- TrackingDataItem.cs
- ComponentChangingEvent.cs
- InkCanvasAutomationPeer.cs
- ImageBrush.cs
- PartBasedPackageProperties.cs
- ProfessionalColors.cs
- WhileDesigner.xaml.cs
- CommandDesigner.cs
- TableItemStyle.cs
- ViewCellSlot.cs
- DefaultSection.cs
- WriteableBitmap.cs
- TranslateTransform3D.cs
- ProtocolsConfigurationHandler.cs
- GridLength.cs
- DataIdProcessor.cs
- sqlser.cs
- DesignBindingPicker.cs
- EFAssociationProvider.cs
- Rectangle.cs
- AccessDataSourceView.cs
- TileBrush.cs
- SharedUtils.cs
- ListViewItemEventArgs.cs
- ServiceContractAttribute.cs
- DataGridViewUtilities.cs
- WebPartZone.cs
- OleDbPropertySetGuid.cs
- DeclarativeCatalogPart.cs
- SmiContext.cs
- UserControlBuildProvider.cs
- CodeTryCatchFinallyStatement.cs
- Transactions.cs
- XmlConvert.cs
- StrokeCollectionDefaultValueFactory.cs
- HtmlInputCheckBox.cs
- BinaryFormatterSinks.cs
- DynamicQueryStringParameter.cs
- Rect3DConverter.cs
- Win32KeyboardDevice.cs
- WebPartMovingEventArgs.cs
- QueryRewriter.cs
- WindowsTokenRoleProvider.cs
- EmptyStringExpandableObjectConverter.cs
- StrongNameKeyPair.cs
- XPathDocumentIterator.cs
- UnsafeNativeMethods.cs
- MenuBase.cs
- DBNull.cs
- CornerRadius.cs
- TrailingSpaceComparer.cs
- HttpListener.cs
- NamespaceDecl.cs
- xamlnodes.cs
- CanonicalFormWriter.cs
- EventArgs.cs
- ToolStripProgressBar.cs
- GestureRecognitionResult.cs
- EntityTransaction.cs
- ListItemCollection.cs
- FormatSettings.cs
- XmlSchemaException.cs
- EmbeddedObject.cs
- CryptoStream.cs
- RightNameExpirationInfoPair.cs
- DataGridTablesFactory.cs
- BoundColumn.cs
- RoutedEventValueSerializer.cs
- DbProviderManifest.cs
- StylusCaptureWithinProperty.cs
- DrawingVisual.cs
- BidPrivateBase.cs
- ProgressBarRenderer.cs