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
- SchemaTableColumn.cs
- MobileSysDescriptionAttribute.cs
- Choices.cs
- RequestCacheValidator.cs
- ItemAutomationPeer.cs
- LocalizabilityAttribute.cs
- RectValueSerializer.cs
- AsyncParams.cs
- WebServiceErrorEvent.cs
- SqlExpressionNullability.cs
- BaseTemplateParser.cs
- AddDataControlFieldDialog.cs
- _NtlmClient.cs
- FixedPageStructure.cs
- DataGridCommandEventArgs.cs
- Queue.cs
- FreeFormDragDropManager.cs
- SourceFilter.cs
- validation.cs
- TextServicesContext.cs
- DiscreteKeyFrames.cs
- MessageTransmitTraceRecord.cs
- XmlRawWriter.cs
- DataGridViewCellFormattingEventArgs.cs
- EmptyElement.cs
- SerializationHelper.cs
- DesignerImageAdapter.cs
- TrackingParticipant.cs
- MemberExpressionHelper.cs
- EventRouteFactory.cs
- HashSet.cs
- RegexGroup.cs
- HttpCapabilitiesBase.cs
- ListViewItemSelectionChangedEvent.cs
- ObjectDesignerDataSourceView.cs
- XmlNodeChangedEventArgs.cs
- XmlNode.cs
- QilTernary.cs
- FileDataSourceCache.cs
- ConfigurationElement.cs
- TableColumn.cs
- SubtreeProcessor.cs
- SqlFormatter.cs
- Vector.cs
- ConnectionProviderAttribute.cs
- RoleService.cs
- ToolStripControlHost.cs
- Helper.cs
- EvidenceBase.cs
- ellipse.cs
- ScrollData.cs
- XmlNamespaceMappingCollection.cs
- TaiwanLunisolarCalendar.cs
- HttpDebugHandler.cs
- XmlEntityReference.cs
- Rfc2898DeriveBytes.cs
- MemberPath.cs
- ColorTransformHelper.cs
- UntypedNullExpression.cs
- StandardBindingElement.cs
- ContentTextAutomationPeer.cs
- ComponentConverter.cs
- ControlBindingsCollection.cs
- DropAnimation.xaml.cs
- HwndSubclass.cs
- OneToOneMappingSerializer.cs
- Binding.cs
- TagPrefixAttribute.cs
- connectionpool.cs
- DefaultAutoFieldGenerator.cs
- ButtonPopupAdapter.cs
- ColorMatrix.cs
- Vector3DCollectionConverter.cs
- LogSwitch.cs
- XmlName.cs
- BaseParser.cs
- ContextMenuAutomationPeer.cs
- ConfigurationLockCollection.cs
- ListViewItemSelectionChangedEvent.cs
- Privilege.cs
- coordinator.cs
- ComponentCodeDomSerializer.cs
- _IPv6Address.cs
- xmlformatgeneratorstatics.cs
- GorillaCodec.cs
- ConnectionsZone.cs
- WS2007FederationHttpBinding.cs
- StylusOverProperty.cs
- ConditionCollection.cs
- ValueTable.cs
- WebPartVerbsEventArgs.cs
- WasAdminWrapper.cs
- Pair.cs
- LocalBuilder.cs
- DataSvcMapFile.cs
- CryptoKeySecurity.cs
- GenericAuthenticationEventArgs.cs
- PrinterSettings.cs
- _Win32.cs
- thaishape.cs