Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AppDomainInstanceProvider.cs
- DataGridViewRowPrePaintEventArgs.cs
- HtmlInputPassword.cs
- LongSumAggregationOperator.cs
- QueryStringParameter.cs
- WebPartRestoreVerb.cs
- InboundActivityHelper.cs
- DescendantOverDescendantQuery.cs
- Baml2006ReaderSettings.cs
- CopyNodeSetAction.cs
- WebPartCatalogAddVerb.cs
- WmlValidationSummaryAdapter.cs
- Control.cs
- MasterPageBuildProvider.cs
- TdsParserSessionPool.cs
- SerialStream.cs
- PageClientProxyGenerator.cs
- KeyboardNavigation.cs
- _BaseOverlappedAsyncResult.cs
- SmiConnection.cs
- HelpInfo.cs
- HandledMouseEvent.cs
- MdImport.cs
- documentsequencetextview.cs
- DrawingContextDrawingContextWalker.cs
- InternalsVisibleToAttribute.cs
- TraceSection.cs
- SafeRightsManagementSessionHandle.cs
- _TransmitFileOverlappedAsyncResult.cs
- LinkLabelLinkClickedEvent.cs
- XmlResolver.cs
- FormatterServices.cs
- AesManaged.cs
- TimeZone.cs
- TemplateBamlTreeBuilder.cs
- EntityStoreSchemaFilterEntry.cs
- QueryCacheEntry.cs
- AnnotationResource.cs
- ExpandableObjectConverter.cs
- TreeSet.cs
- Descriptor.cs
- ApplicationManager.cs
- XslVisitor.cs
- MethodCallExpression.cs
- ConnectionOrientedTransportManager.cs
- EntityFrameworkVersions.cs
- EntitySetDataBindingList.cs
- XmlNamespaceManager.cs
- PriorityQueue.cs
- HTMLTextWriter.cs
- WebServiceReceive.cs
- HMACSHA1.cs
- XmlChildEnumerator.cs
- ModelItemKeyValuePair.cs
- QilParameter.cs
- ConfigurationSection.cs
- PersonalizationStateQuery.cs
- GestureRecognitionResult.cs
- ToolStripMenuItemDesigner.cs
- ParameterInfo.cs
- SchemaImporterExtension.cs
- StrokeDescriptor.cs
- PageThemeParser.cs
- BitVector32.cs
- SchemaMapping.cs
- ClientTarget.cs
- DuplexChannelFactory.cs
- GeneralTransform3DCollection.cs
- RegexStringValidator.cs
- ToolboxItemAttribute.cs
- TextFormatterImp.cs
- BaseTemplateParser.cs
- Application.cs
- DriveNotFoundException.cs
- DefinitionBase.cs
- SystemException.cs
- UnsafeNativeMethods.cs
- OciHandle.cs
- SkewTransform.cs
- DoubleUtil.cs
- WmlCalendarAdapter.cs
- RuntimeCompatibilityAttribute.cs
- StreamGeometryContext.cs
- _PooledStream.cs
- ColorTranslator.cs
- SendMessageRecord.cs
- WebControl.cs
- ApplicationFileParser.cs
- ErrorWebPart.cs
- TabControlCancelEvent.cs
- XmlSchemaSimpleTypeList.cs
- XmlDomTextWriter.cs
- StringExpressionSet.cs
- EnvelopeVersion.cs
- SqlFacetAttribute.cs
- SymLanguageVendor.cs
- HttpClientProtocol.cs
- HtmlContainerControl.cs
- WindowsFormsSynchronizationContext.cs
- EventListenerClientSide.cs