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
- CodeTypeDeclarationCollection.cs
- UshortList2.cs
- LinearKeyFrames.cs
- DataReaderContainer.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- XmlReader.cs
- ToolStripRenderer.cs
- ExpressionBuilder.cs
- MouseButtonEventArgs.cs
- IPCCacheManager.cs
- QilReference.cs
- BaseConfigurationRecord.cs
- ExtensionFile.cs
- DataTableClearEvent.cs
- Trace.cs
- Typeface.cs
- DefaultParameterValueAttribute.cs
- SqlUdtInfo.cs
- Container.cs
- CachedCompositeFamily.cs
- Int32Rect.cs
- CacheDict.cs
- StyleXamlTreeBuilder.cs
- CryptoApi.cs
- WebColorConverter.cs
- Scheduling.cs
- EdmProviderManifest.cs
- ParameterSubsegment.cs
- __FastResourceComparer.cs
- ResourcePermissionBaseEntry.cs
- DetailsViewUpdateEventArgs.cs
- SpecularMaterial.cs
- OuterGlowBitmapEffect.cs
- EventsTab.cs
- BitmapEffectDrawing.cs
- WorkflowApplicationUnloadedException.cs
- EntityRecordInfo.cs
- Context.cs
- dataobject.cs
- CommonXSendMessage.cs
- CodeDomDesignerLoader.cs
- ConfigurationPropertyCollection.cs
- DefaultBinder.cs
- ProxyGenerationError.cs
- ConcurrentQueue.cs
- NumberAction.cs
- DataTrigger.cs
- ViewStateModeByIdAttribute.cs
- SearchExpression.cs
- KeyEvent.cs
- ProcessModuleCollection.cs
- NumberFormatInfo.cs
- ToolstripProfessionalRenderer.cs
- ManipulationInertiaStartingEventArgs.cs
- ListDataHelper.cs
- ParsedAttributeCollection.cs
- SingleSelectRootGridEntry.cs
- InputLanguageManager.cs
- OracleCommandSet.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- CanonicalFormWriter.cs
- InputMethod.cs
- OleDbCommandBuilder.cs
- ToolBarButton.cs
- ByteAnimation.cs
- ListView.cs
- ConfigXmlElement.cs
- AutomationPropertyInfo.cs
- XPathAncestorIterator.cs
- NullReferenceException.cs
- LineMetrics.cs
- HwndMouseInputProvider.cs
- CompilationSection.cs
- RegexCaptureCollection.cs
- _NegoStream.cs
- BaseDataList.cs
- Clause.cs
- ScaleTransform.cs
- AsyncCompletedEventArgs.cs
- precedingsibling.cs
- FillErrorEventArgs.cs
- safex509handles.cs
- SmtpMail.cs
- Array.cs
- SchemaAttDef.cs
- LeaseManager.cs
- SessionPageStatePersister.cs
- CommunicationException.cs
- WebServiceData.cs
- AssemblyFilter.cs
- FormatException.cs
- DbConnectionOptions.cs
- ProcessModelSection.cs
- ButtonChrome.cs
- ModuleBuilder.cs
- Stream.cs
- SoapSchemaImporter.cs
- SrgsSubset.cs
- HttpVersion.cs
- CodeTypeDeclarationCollection.cs