Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- TemplateParser.cs
- ScrollViewerAutomationPeer.cs
- WebPartExportVerb.cs
- CurrentChangingEventArgs.cs
- InputMethodStateChangeEventArgs.cs
- PathGeometry.cs
- Util.cs
- ListenerSessionConnection.cs
- MultipleViewProviderWrapper.cs
- PersonalizationEntry.cs
- GenericUriParser.cs
- SoapIgnoreAttribute.cs
- XmlSchemaCompilationSettings.cs
- PrintController.cs
- ControlParameter.cs
- DuplicateWaitObjectException.cs
- XamlClipboardData.cs
- Geometry3D.cs
- CodeTypeOfExpression.cs
- EntityCommandExecutionException.cs
- WebPartCatalogCloseVerb.cs
- AsyncStreamReader.cs
- BoolExpressionVisitors.cs
- wgx_sdk_version.cs
- PartialTrustVisibleAssembliesSection.cs
- CodeSnippetExpression.cs
- HttpDebugHandler.cs
- BuildProvider.cs
- ClientBuildManager.cs
- Light.cs
- ModelUIElement3D.cs
- CultureTableRecord.cs
- DetailsViewDeleteEventArgs.cs
- PropertyMappingExceptionEventArgs.cs
- SimpleWebHandlerParser.cs
- TextEditorCopyPaste.cs
- DiffuseMaterial.cs
- PropertyValidationContext.cs
- MsmqTransportElement.cs
- FontWeight.cs
- RuntimeConfig.cs
- ItemsPresenter.cs
- GAC.cs
- LinqDataSourceEditData.cs
- ComponentResourceKey.cs
- XPathSingletonIterator.cs
- ReversePositionQuery.cs
- CaseInsensitiveOrdinalStringComparer.cs
- AsnEncodedData.cs
- CompositeFontFamily.cs
- ProxyWebPartManager.cs
- SecurityPolicyVersion.cs
- RegisteredExpandoAttribute.cs
- SchemaElement.cs
- DataTemplateKey.cs
- MouseButton.cs
- TraceSection.cs
- QilTernary.cs
- StateManagedCollection.cs
- BatchServiceHost.cs
- ExternalException.cs
- ILGenerator.cs
- WebRequestModulesSection.cs
- CommandID.cs
- EntityDataSourceDesignerHelper.cs
- ObjectStateFormatter.cs
- DivideByZeroException.cs
- HostedTransportConfigurationBase.cs
- TemplateBindingExpressionConverter.cs
- XmlILOptimizerVisitor.cs
- BamlTreeMap.cs
- XmlTextReaderImpl.cs
- XmlDigitalSignatureProcessor.cs
- Int32AnimationUsingKeyFrames.cs
- EnvelopedPkcs7.cs
- LZCodec.cs
- ReaderWriterLock.cs
- DataColumnMapping.cs
- OptimizedTemplateContent.cs
- MatchingStyle.cs
- FormViewDeleteEventArgs.cs
- InputProcessorProfilesLoader.cs
- EventLogPermission.cs
- TextLineResult.cs
- CodeStatement.cs
- AssociationTypeEmitter.cs
- Application.cs
- ControlAdapter.cs
- ListBoxItemWrapperAutomationPeer.cs
- ColumnResizeAdorner.cs
- MdiWindowListItemConverter.cs
- DataContract.cs
- WindowsIdentity.cs
- SchemaImporterExtensionsSection.cs
- DLinqTableProvider.cs
- XmlSiteMapProvider.cs
- ToolStripContentPanel.cs
- CompositeScriptReference.cs
- ComplexTypeEmitter.cs
- DesignerMetadata.cs