Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- HebrewCalendar.cs
- StringUtil.cs
- XsdSchemaFileEditor.cs
- TextProperties.cs
- SynchronizedDispatch.cs
- HwndSourceKeyboardInputSite.cs
- WebContentFormatHelper.cs
- RuleSettingsCollection.cs
- EditorPart.cs
- FieldNameLookup.cs
- TextRangeProviderWrapper.cs
- CheckBox.cs
- MatrixAnimationUsingKeyFrames.cs
- XamlFilter.cs
- ContainerSelectorActiveEvent.cs
- FloaterBaseParaClient.cs
- SessionIDManager.cs
- BamlRecordHelper.cs
- SetState.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- PartialCachingAttribute.cs
- RecordBuilder.cs
- NameValueCollection.cs
- DelegateOutArgument.cs
- CodeNamespace.cs
- SimpleWorkerRequest.cs
- GlyphRunDrawing.cs
- MemberAccessException.cs
- AtomicFile.cs
- SerializationFieldInfo.cs
- FontSizeConverter.cs
- InfoCardTrace.cs
- Interlocked.cs
- BindingNavigator.cs
- EncryptedKey.cs
- SqlFlattener.cs
- AnchorEditor.cs
- DataKey.cs
- DataContractJsonSerializerOperationBehavior.cs
- DeploymentSection.cs
- XmlSigningNodeWriter.cs
- AsyncOperation.cs
- ObjectViewEntityCollectionData.cs
- DataService.cs
- OpenFileDialog.cs
- ServiceEndpointElementCollection.cs
- PeerPresenceInfo.cs
- FolderLevelBuildProvider.cs
- CodePrimitiveExpression.cs
- VariableExpressionConverter.cs
- RouteItem.cs
- TemplateControlCodeDomTreeGenerator.cs
- XPathItem.cs
- MultipleViewPatternIdentifiers.cs
- Enum.cs
- TraceSection.cs
- AssemblyNameProxy.cs
- RSAProtectedConfigurationProvider.cs
- DoubleCollectionValueSerializer.cs
- CompressionTracing.cs
- PasswordRecovery.cs
- Rules.cs
- ToolBar.cs
- GeometryConverter.cs
- RecommendedAsConfigurableAttribute.cs
- XslNumber.cs
- ContentType.cs
- ObjectContextServiceProvider.cs
- FixedBufferAttribute.cs
- TextStore.cs
- LinearGradientBrush.cs
- StylusLogic.cs
- Typography.cs
- CheckBoxRenderer.cs
- PageSettings.cs
- WindowsToolbar.cs
- EntityDataSourceEntitySetNameItem.cs
- BlockingCollection.cs
- EventLogException.cs
- Utility.cs
- NativeMethods.cs
- WebBaseEventKeyComparer.cs
- AspNetSynchronizationContext.cs
- ScrollViewer.cs
- AttachedAnnotation.cs
- RegistryPermission.cs
- DocumentsTrace.cs
- Token.cs
- ModulesEntry.cs
- DoubleAnimationUsingPath.cs
- TileModeValidation.cs
- ReadOnlyDataSource.cs
- FontDriver.cs
- RelationshipNavigation.cs
- UrlRoutingHandler.cs
- QilGenerator.cs
- AnnotationMap.cs
- IPipelineRuntime.cs
- ChtmlTextWriter.cs
- AuthenticationService.cs