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
- ScalarOps.cs
- PartBasedPackageProperties.cs
- NameTable.cs
- SessionSymmetricTransportSecurityProtocolFactory.cs
- NegotiateStream.cs
- StrongTypingException.cs
- StringArrayConverter.cs
- XmlAnyElementAttribute.cs
- NotSupportedException.cs
- SafeRightsManagementHandle.cs
- ComponentChangingEvent.cs
- DWriteFactory.cs
- httpserverutility.cs
- DocumentPageViewAutomationPeer.cs
- DbParameterHelper.cs
- PropertyContainer.cs
- Internal.cs
- ControlBindingsCollection.cs
- DBConnection.cs
- BitmapMetadata.cs
- DataTableClearEvent.cs
- TypedMessageConverter.cs
- ActivityBindForm.Designer.cs
- XmlDictionaryString.cs
- CodeDirectoryCompiler.cs
- Span.cs
- TcpSocketManager.cs
- TimeSpanFormat.cs
- SqlFunctions.cs
- GeneralTransformCollection.cs
- SpeakProgressEventArgs.cs
- DebugController.cs
- NonDualMessageSecurityOverHttpElement.cs
- IntermediatePolicyValidator.cs
- BamlMapTable.cs
- StringOutput.cs
- DispatchOperationRuntime.cs
- PolicyLevel.cs
- AccessibleObject.cs
- CompositionAdorner.cs
- AssemblyCollection.cs
- ZipArchive.cs
- SqlCommandBuilder.cs
- CodeTypeDelegate.cs
- ChildTable.cs
- OneOfConst.cs
- Memoizer.cs
- Image.cs
- PolicyConversionContext.cs
- JulianCalendar.cs
- BindingMAnagerBase.cs
- CodeTypeDelegate.cs
- BevelBitmapEffect.cs
- MergablePropertyAttribute.cs
- Attributes.cs
- DeploymentSection.cs
- AddDataControlFieldDialog.cs
- SqlInternalConnection.cs
- DeadCharTextComposition.cs
- MiniConstructorInfo.cs
- CommandField.cs
- Pointer.cs
- ProviderIncompatibleException.cs
- SiteMapNode.cs
- PropertyItem.cs
- KnownBoxes.cs
- HttpRuntimeSection.cs
- XmlSerializationWriter.cs
- ListCommandEventArgs.cs
- DictionaryContent.cs
- TextEditorCharacters.cs
- RegexCaptureCollection.cs
- HotCommands.cs
- ProtocolsInstallComponent.cs
- DataChangedEventManager.cs
- SignatureToken.cs
- TypeValidationEventArgs.cs
- DataConnectionHelper.cs
- JsonStringDataContract.cs
- CertificateManager.cs
- ListControl.cs
- FixedElement.cs
- TypeCollectionPropertyEditor.cs
- COAUTHIDENTITY.cs
- SqlDataSourceAdvancedOptionsForm.cs
- SchemaElementDecl.cs
- CodeExpressionStatement.cs
- SortQuery.cs
- ToolBarTray.cs
- CollaborationHelperFunctions.cs
- PolicyManager.cs
- Int16.cs
- TextWriterTraceListener.cs
- PropertyGridEditorPart.cs
- WindowsRegion.cs
- HttpHostedTransportConfiguration.cs
- AppDomainInfo.cs
- VisualTransition.cs
- EdmValidator.cs
- CroppedBitmap.cs