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
- SemanticResultValue.cs
- PrivacyNoticeBindingElementImporter.cs
- XmlNodeList.cs
- CommandDevice.cs
- CodeRemoveEventStatement.cs
- DBParameter.cs
- Cloud.cs
- BinaryKeyIdentifierClause.cs
- ISAPIWorkerRequest.cs
- CultureData.cs
- xmlglyphRunInfo.cs
- WebAdminConfigurationHelper.cs
- ColumnResizeUndoUnit.cs
- sqlser.cs
- NeutralResourcesLanguageAttribute.cs
- HttpRawResponse.cs
- PropertyGeneratedEventArgs.cs
- BitmapEffectDrawing.cs
- DocumentOrderQuery.cs
- ProfileBuildProvider.cs
- IPipelineRuntime.cs
- ColumnTypeConverter.cs
- CrossAppDomainChannel.cs
- JsonFormatReaderGenerator.cs
- ScrollItemProviderWrapper.cs
- ThreadStaticAttribute.cs
- DataGrid.cs
- ListViewItem.cs
- Convert.cs
- TypeSystemProvider.cs
- EncoderFallback.cs
- ProfileWorkflowElement.cs
- GridViewSelectEventArgs.cs
- StateWorkerRequest.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- IDispatchConstantAttribute.cs
- PropertyConverter.cs
- RoleGroup.cs
- DayRenderEvent.cs
- CapabilitiesAssignment.cs
- Span.cs
- DocumentReference.cs
- AttributeCollection.cs
- AlgoModule.cs
- DES.cs
- WindowsScrollBarBits.cs
- Rect3DValueSerializer.cs
- EventLogWatcher.cs
- MissingFieldException.cs
- Model3D.cs
- WindowVisualStateTracker.cs
- OrderedDictionary.cs
- BasicExpandProvider.cs
- Win32NamedPipes.cs
- IList.cs
- BamlStream.cs
- ScriptBehaviorDescriptor.cs
- XmlDocumentType.cs
- SamlAssertionKeyIdentifierClause.cs
- Dump.cs
- PanelStyle.cs
- LineGeometry.cs
- PrintingPermissionAttribute.cs
- QueryComponents.cs
- SslStream.cs
- ADMembershipUser.cs
- StackSpiller.Bindings.cs
- AssemblyAttributesGoHere.cs
- ItemsControlAutomationPeer.cs
- EntitySqlQueryCacheEntry.cs
- RepeaterItemEventArgs.cs
- SqlConnectionManager.cs
- SoapHelper.cs
- ObjectAnimationBase.cs
- LinkDescriptor.cs
- BlockUIContainer.cs
- baseaxisquery.cs
- XmlDictionaryString.cs
- LifetimeServices.cs
- Axis.cs
- ConnectionStringSettingsCollection.cs
- AppSettingsReader.cs
- HttpCachePolicyElement.cs
- ClientOperation.cs
- ExpressionStringBuilder.cs
- ObjRef.cs
- PenLineCapValidation.cs
- CopyOnWriteList.cs
- DriveInfo.cs
- BamlRecordHelper.cs
- WeakEventManager.cs
- CachedTypeface.cs
- UserControl.cs
- Normalization.cs
- ResourcePermissionBase.cs
- ConnectionsZone.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- SerializationInfo.cs
- ObjectAnimationUsingKeyFrames.cs
- XdrBuilder.cs