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
- TypeValidationEventArgs.cs
- DispatcherProcessingDisabled.cs
- StateMachineWorkflowDesigner.cs
- ProvidePropertyAttribute.cs
- CacheVirtualItemsEvent.cs
- FixedPageProcessor.cs
- EncoderFallback.cs
- SHA256Managed.cs
- SqlDataSource.cs
- AsymmetricKeyExchangeDeformatter.cs
- DataObjectMethodAttribute.cs
- NavigatorOutput.cs
- Geometry3D.cs
- DataTableMappingCollection.cs
- wgx_exports.cs
- UniqueIdentifierService.cs
- StoreContentChangedEventArgs.cs
- TableItemStyle.cs
- BinaryMethodMessage.cs
- PointCollection.cs
- DynamicValueConverter.cs
- DependencyPropertyChangedEventArgs.cs
- DesigntimeLicenseContext.cs
- QilXmlReader.cs
- EncryptedPackageFilter.cs
- DesignerActionKeyboardBehavior.cs
- TransformProviderWrapper.cs
- TextComposition.cs
- ToolbarAUtomationPeer.cs
- InternalCache.cs
- XmlDictionaryString.cs
- ToolStripOverflowButton.cs
- RectangleHotSpot.cs
- JsonReader.cs
- TypographyProperties.cs
- ResumeStoryboard.cs
- HttpRuntimeSection.cs
- DataBindingCollectionEditor.cs
- ForwardPositionQuery.cs
- WorkflowMarkupSerializationManager.cs
- XmlSchemaAppInfo.cs
- TableChangeProcessor.cs
- DataKeyCollection.cs
- Int16.cs
- InkCanvasSelection.cs
- BinaryFormatterSinks.cs
- PrePostDescendentsWalker.cs
- AtomEntry.cs
- TreeView.cs
- ProcessHostServerConfig.cs
- EntitySqlQueryState.cs
- Sequence.cs
- StoryFragments.cs
- DataGridTableCollection.cs
- PartitionerStatic.cs
- CounterSet.cs
- ViewStateException.cs
- SchemaNotation.cs
- QuaternionAnimationBase.cs
- SchemaImporter.cs
- Ticks.cs
- NetworkInformationPermission.cs
- HatchBrush.cs
- OptimisticConcurrencyException.cs
- KeyInterop.cs
- PreProcessInputEventArgs.cs
- OutputCacheProfileCollection.cs
- CombinedGeometry.cs
- AutoFocusStyle.xaml.cs
- SyndicationItem.cs
- NotifyParentPropertyAttribute.cs
- TextEncodedRawTextWriter.cs
- RemoteWebConfigurationHostStream.cs
- InputScopeConverter.cs
- OLEDB_Enum.cs
- TextElementEnumerator.cs
- XsdCachingReader.cs
- HtmlFormWrapper.cs
- TimeZone.cs
- _NtlmClient.cs
- ValidatingReaderNodeData.cs
- CalendarSelectionChangedEventArgs.cs
- PriorityBinding.cs
- SafeThemeHandle.cs
- WindowsFont.cs
- ButtonFieldBase.cs
- SqlFacetAttribute.cs
- MouseWheelEventArgs.cs
- NativeRecognizer.cs
- listitem.cs
- CompleteWizardStep.cs
- ProfileService.cs
- PlanCompiler.cs
- CodeSubDirectoriesCollection.cs
- WindowHelperService.cs
- PreviewControlDesigner.cs
- SchemaImporterExtensionElement.cs
- FactoryGenerator.cs
- TransformProviderWrapper.cs
- Bold.cs