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
- IndependentlyAnimatedPropertyMetadata.cs
- MaskedTextBoxTextEditorDropDown.cs
- DataGridComboBoxColumn.cs
- ApplicationManager.cs
- RectAnimationUsingKeyFrames.cs
- HtmlFormParameterReader.cs
- ExceptionRoutedEventArgs.cs
- Atom10FormatterFactory.cs
- _ConnectOverlappedAsyncResult.cs
- WebContext.cs
- HttpListenerResponse.cs
- CompileXomlTask.cs
- SmiEventSink.cs
- LoginStatusDesigner.cs
- ToolStripRendererSwitcher.cs
- TagMapInfo.cs
- Rotation3D.cs
- CustomCredentialPolicy.cs
- DateTimeFormatInfoScanner.cs
- PermissionRequestEvidence.cs
- TreeChangeInfo.cs
- DXD.cs
- Attributes.cs
- TextBlock.cs
- DictionaryGlobals.cs
- QueryStoreStatusRequest.cs
- DefaultWorkflowLoaderService.cs
- OleDbPropertySetGuid.cs
- MtomMessageEncoder.cs
- ExpressionParser.cs
- Int32Converter.cs
- RequestCachePolicy.cs
- DataBindingList.cs
- ObjectAnimationBase.cs
- ImportContext.cs
- CommandValueSerializer.cs
- FileDialog_Vista.cs
- SqlDataSourceCache.cs
- TransformPattern.cs
- TableRowCollection.cs
- ProjectionCamera.cs
- UserPersonalizationStateInfo.cs
- MultilineStringConverter.cs
- Directory.cs
- TypedTableBase.cs
- SettingsPropertyIsReadOnlyException.cs
- ImageMapEventArgs.cs
- SystemColorTracker.cs
- ComplusEndpointConfigContainer.cs
- SystemInfo.cs
- WorkerRequest.cs
- UdpTransportSettings.cs
- PageThemeParser.cs
- XComponentModel.cs
- HuffCodec.cs
- EnumType.cs
- BasicSecurityProfileVersion.cs
- TaskFormBase.cs
- IdentityNotMappedException.cs
- CachedTypeface.cs
- CombinedHttpChannel.cs
- ReferenceService.cs
- PersonalizationAdministration.cs
- ipaddressinformationcollection.cs
- MappingSource.cs
- PageContent.cs
- HeaderCollection.cs
- TextSchema.cs
- XmlTextReaderImpl.cs
- QueueAccessMode.cs
- DataGridViewBindingCompleteEventArgs.cs
- NonceCache.cs
- PolyBezierSegment.cs
- Cursors.cs
- ComplexTypeEmitter.cs
- CodeCompileUnit.cs
- WebEvents.cs
- PropertyRef.cs
- ModelTypeConverter.cs
- ReadOnlyNameValueCollection.cs
- ComplexLine.cs
- XhtmlBasicCalendarAdapter.cs
- TemplatePropertyEntry.cs
- QuaternionAnimationUsingKeyFrames.cs
- PriorityBindingExpression.cs
- ResourcePart.cs
- AvtEvent.cs
- WebPartChrome.cs
- Italic.cs
- ClientApiGenerator.cs
- PartialArray.cs
- sqlcontext.cs
- EncodingDataItem.cs
- EntityViewGenerator.cs
- PropertyStore.cs
- Container.cs
- ProviderUtil.cs
- ProfileSection.cs
- QuaternionAnimationUsingKeyFrames.cs
- CommentAction.cs