Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- ToolboxComponentsCreatedEventArgs.cs
- DefaultTextStoreTextComposition.cs
- ConfigurationManagerInternal.cs
- MetadataArtifactLoaderFile.cs
- SamlAttributeStatement.cs
- Control.cs
- ResXBuildProvider.cs
- GiveFeedbackEventArgs.cs
- DoneReceivingAsyncResult.cs
- EraserBehavior.cs
- DataGridViewEditingControlShowingEventArgs.cs
- BuildManager.cs
- GenerateDerivedKeyRequest.cs
- EntityParameterCollection.cs
- SubpageParagraph.cs
- DynamicValueConverter.cs
- SmtpNegotiateAuthenticationModule.cs
- TextBlockAutomationPeer.cs
- ListBindingHelper.cs
- SqlFileStream.cs
- DataGridItem.cs
- TableCell.cs
- SchemaNotation.cs
- DbProviderFactories.cs
- MailBnfHelper.cs
- SmiXetterAccessMap.cs
- MetaModel.cs
- RegexCompilationInfo.cs
- HttpCacheVaryByContentEncodings.cs
- baseshape.cs
- ParserHooks.cs
- DisposableCollectionWrapper.cs
- ObjectTokenCategory.cs
- NotSupportedException.cs
- ByteKeyFrameCollection.cs
- BitmapDownload.cs
- InstanceLockedException.cs
- MenuItemBindingCollection.cs
- WindowsListViewSubItem.cs
- XmlSchemaFacet.cs
- HtmlImage.cs
- StorageEntitySetMapping.cs
- Rotation3DKeyFrameCollection.cs
- BindingValueChangedEventArgs.cs
- TreeNodeCollection.cs
- TraceLevelStore.cs
- LateBoundBitmapDecoder.cs
- XmlTextReaderImplHelpers.cs
- AnnotationService.cs
- SQlBooleanStorage.cs
- EventLogConfiguration.cs
- ArraySortHelper.cs
- XmlQueryRuntime.cs
- AxImporter.cs
- HostedHttpRequestAsyncResult.cs
- COAUTHIDENTITY.cs
- Activity.cs
- VectorCollectionValueSerializer.cs
- KeyValuePair.cs
- OdbcErrorCollection.cs
- DocumentReferenceCollection.cs
- XmlMemberMapping.cs
- Point3D.cs
- TreeViewItemAutomationPeer.cs
- MobileTextWriter.cs
- SynchronousSendBindingElement.cs
- ScheduleChanges.cs
- BuildResult.cs
- Ticks.cs
- CacheRequest.cs
- IdentifierService.cs
- FastEncoder.cs
- BasePattern.cs
- TemplateColumn.cs
- CodeCastExpression.cs
- BitmapDownload.cs
- WebPartEditVerb.cs
- TraceFilter.cs
- MetadataArtifactLoaderCompositeResource.cs
- DbLambda.cs
- DesignBindingPropertyDescriptor.cs
- Point3DCollectionConverter.cs
- ReadWriteObjectLock.cs
- WinFormsComponentEditor.cs
- SourceLocationProvider.cs
- LinqTreeNodeEvaluator.cs
- CollectionViewGroupRoot.cs
- MenuAdapter.cs
- CustomErrorsSectionWrapper.cs
- KeyPullup.cs
- CompositeKey.cs
- RoleManagerModule.cs
- StateManagedCollection.cs
- EmptyElement.cs
- ContainerSelectorBehavior.cs
- SuppressedPackageProperties.cs
- newinstructionaction.cs
- grammarelement.cs
- FactoryRecord.cs
- EdmRelationshipNavigationPropertyAttribute.cs