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
- WindowsNonControl.cs
- SafeNativeMethods.cs
- CommonXSendMessage.cs
- DBSchemaTable.cs
- ChangeBlockUndoRecord.cs
- ListControlStringCollectionEditor.cs
- UTF7Encoding.cs
- HostedElements.cs
- DesignerAttribute.cs
- _SslSessionsCache.cs
- VectorAnimation.cs
- ContextStack.cs
- Vector.cs
- EventMap.cs
- WhereQueryOperator.cs
- NonParentingControl.cs
- MailBnfHelper.cs
- FtpWebRequest.cs
- SQLGuid.cs
- SqlCacheDependencyDatabase.cs
- RegexCapture.cs
- SessionSwitchEventArgs.cs
- EdmFunction.cs
- DetailsViewUpdateEventArgs.cs
- GridViewRowCollection.cs
- ArrayListCollectionBase.cs
- PipelineModuleStepContainer.cs
- XamlFilter.cs
- EmptyEnumerator.cs
- WebPartConnectionsCancelVerb.cs
- ProfileInfo.cs
- IImplicitResourceProvider.cs
- AffineTransform3D.cs
- LocalizationParserHooks.cs
- LocalValueEnumerator.cs
- DesignerContextDescriptor.cs
- ArrayList.cs
- IPAddressCollection.cs
- ContentElementAutomationPeer.cs
- DataSetSchema.cs
- FormatterServices.cs
- DesignerAdapterUtil.cs
- SystemIPInterfaceStatistics.cs
- EventMetadata.cs
- X509Utils.cs
- HelpInfo.cs
- MobileControl.cs
- WindowsStreamSecurityElement.cs
- CompensatableSequenceActivity.cs
- MachineKeySection.cs
- SystemColors.cs
- AssemblyAttributes.cs
- TextTreeTextElementNode.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- PermissionAttributes.cs
- FlowDecision.cs
- DESCryptoServiceProvider.cs
- controlskin.cs
- DbExpressionVisitor_TResultType.cs
- WindowsIPAddress.cs
- DataRecordInfo.cs
- XsdValidatingReader.cs
- ArrayConverter.cs
- FixedPageProcessor.cs
- _NativeSSPI.cs
- DataFormats.cs
- UIElement.cs
- MailMessageEventArgs.cs
- UIElementPropertyUndoUnit.cs
- ProtocolViolationException.cs
- DivideByZeroException.cs
- Publisher.cs
- UnauthorizedWebPart.cs
- WsiProfilesElement.cs
- FaultCallbackWrapper.cs
- VirtualPathUtility.cs
- AdapterDictionary.cs
- ValueUnavailableException.cs
- SafeCryptHandles.cs
- CqlLexer.cs
- ProxyWebPartConnectionCollection.cs
- UICuesEvent.cs
- XmlSchemas.cs
- printdlgexmarshaler.cs
- RijndaelManagedTransform.cs
- Propagator.cs
- ProcessModelInfo.cs
- ModuleBuilderData.cs
- EntityFrameworkVersions.cs
- QilSortKey.cs
- CriticalFinalizerObject.cs
- PackagePartCollection.cs
- TransformerInfoCollection.cs
- DataTableNewRowEvent.cs
- Tuple.cs
- LookupNode.cs
- OracleInternalConnection.cs
- DSASignatureFormatter.cs
- RenamedEventArgs.cs
- AuthenticationManager.cs