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
- StyleSheetDesigner.cs
- HttpModuleActionCollection.cs
- RemoteWebConfigurationHost.cs
- LayoutManager.cs
- MonthCalendar.cs
- RayMeshGeometry3DHitTestResult.cs
- ToolStripPanelCell.cs
- InstanceCreationEditor.cs
- VariantWrapper.cs
- ColumnTypeConverter.cs
- PeerIPHelper.cs
- ConfigXmlReader.cs
- UiaCoreProviderApi.cs
- TraceSwitch.cs
- Cursors.cs
- StyleBamlRecordReader.cs
- InputBinder.cs
- BaseTemplateParser.cs
- RtfFormatStack.cs
- EntityTypeEmitter.cs
- PerformanceCountersElement.cs
- HttpModulesSection.cs
- EntitySqlQueryState.cs
- WeakReadOnlyCollection.cs
- FormViewInsertEventArgs.cs
- MemoryStream.cs
- TransportSecurityBindingElement.cs
- HostingEnvironmentSection.cs
- StringUtil.cs
- ColumnReorderedEventArgs.cs
- WebColorConverter.cs
- RadioButton.cs
- XmlLoader.cs
- EmptyImpersonationContext.cs
- Timer.cs
- ForEach.cs
- ScriptControlManager.cs
- NamespaceImport.cs
- CanonicalXml.cs
- ScrollProperties.cs
- Attributes.cs
- HttpPostClientProtocol.cs
- JobPageOrder.cs
- BindingExpressionBase.cs
- ArrayItemReference.cs
- SqlParameterizer.cs
- EpmTargetPathSegment.cs
- ClockGroup.cs
- SoapTypeAttribute.cs
- RSAPKCS1KeyExchangeFormatter.cs
- XsdBuildProvider.cs
- Panel.cs
- OleDbError.cs
- hebrewshape.cs
- TextElementAutomationPeer.cs
- FtpWebRequest.cs
- Parsers.cs
- Relationship.cs
- SoapAttributeOverrides.cs
- ValueHandle.cs
- Matrix.cs
- StreamInfo.cs
- EntityDataSourceDesignerHelper.cs
- EllipticalNodeOperations.cs
- LabelInfo.cs
- EntityDataSourceState.cs
- BinaryKeyIdentifierClause.cs
- WindowsEditBox.cs
- ProtectedConfiguration.cs
- DataBindEngine.cs
- LineSegment.cs
- CrossAppDomainChannel.cs
- ArgumentsParser.cs
- RefreshPropertiesAttribute.cs
- TimeZoneInfo.cs
- ByteStreamGeometryContext.cs
- EventlogProvider.cs
- HttpCachePolicyElement.cs
- Types.cs
- BaseResourcesBuildProvider.cs
- WmlImageAdapter.cs
- Stream.cs
- MetaModel.cs
- FixedHighlight.cs
- XmlSerializer.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- RawMouseInputReport.cs
- ReadOnlyCollectionBase.cs
- TdsValueSetter.cs
- QilTernary.cs
- ListenerSingletonConnectionReader.cs
- DataGridViewRowConverter.cs
- PathNode.cs
- clipboard.cs
- HttpApplicationStateBase.cs
- ObjectPersistData.cs
- DynamicActionMessageFilter.cs
- RequestContext.cs
- BitmapFrameEncode.cs
- OutKeywords.cs