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
- XmlTextReaderImplHelpers.cs
- ScriptManager.cs
- SyndicationDeserializer.cs
- RSAPKCS1SignatureFormatter.cs
- CssStyleCollection.cs
- IdnElement.cs
- BackgroundWorker.cs
- CellQuery.cs
- TableRow.cs
- CodeFieldReferenceExpression.cs
- GatewayIPAddressInformationCollection.cs
- RawStylusInput.cs
- SystemUdpStatistics.cs
- Pen.cs
- StringHelper.cs
- WorkflowRuntimeServiceElement.cs
- VisualBrush.cs
- ClientTargetCollection.cs
- OleDbError.cs
- PrefixQName.cs
- ImageDrawing.cs
- DesignerDataSchemaClass.cs
- DetailsViewInsertedEventArgs.cs
- PlatformCulture.cs
- ImageMap.cs
- DesignerActionMethodItem.cs
- fixedPageContentExtractor.cs
- PasswordPropertyTextAttribute.cs
- TextDecorationCollectionConverter.cs
- PropertySourceInfo.cs
- EntityModelBuildProvider.cs
- TrackingMemoryStream.cs
- EditorZoneBase.cs
- ContextProperty.cs
- SspiSecurityToken.cs
- ClassicBorderDecorator.cs
- SocketElement.cs
- DuplicateWaitObjectException.cs
- ToolStripDropDown.cs
- CheckPair.cs
- oledbmetadatacolumnnames.cs
- SortFieldComparer.cs
- ImageDrawing.cs
- DataControlField.cs
- GridView.cs
- LicenseProviderAttribute.cs
- HtmlPanelAdapter.cs
- DataGridViewTopLeftHeaderCell.cs
- AutoScrollExpandMessageFilter.cs
- FieldBuilder.cs
- RadioButtonPopupAdapter.cs
- CookieHandler.cs
- SQLResource.cs
- SoapEnumAttribute.cs
- ControlCollection.cs
- Identity.cs
- EmptyReadOnlyDictionaryInternal.cs
- BooleanStorage.cs
- RuleSetDialog.Designer.cs
- ServerValidateEventArgs.cs
- Number.cs
- ProcessThread.cs
- XmlDataLoader.cs
- ParamArrayAttribute.cs
- UpDownEvent.cs
- UnionExpr.cs
- ChannelTracker.cs
- SqlClientWrapperSmiStreamChars.cs
- SamlSecurityToken.cs
- LogicalExpressionEditor.cs
- XsltContext.cs
- httpserverutility.cs
- XmlCustomFormatter.cs
- ImageListStreamer.cs
- path.cs
- AccessedThroughPropertyAttribute.cs
- TextInfo.cs
- WebServiceHostFactory.cs
- ApplyTemplatesAction.cs
- XmlBinaryWriterSession.cs
- DataGridViewColumnStateChangedEventArgs.cs
- XNodeNavigator.cs
- SingleKeyFrameCollection.cs
- _IPv4Address.cs
- MenuTracker.cs
- EntityType.cs
- Stacktrace.cs
- ConsoleKeyInfo.cs
- WpfKnownMemberInvoker.cs
- DependencyObject.cs
- LookupNode.cs
- Part.cs
- ControlBuilderAttribute.cs
- BindingListCollectionView.cs
- SizeLimitedCache.cs
- SqlSupersetValidator.cs
- TypeInitializationException.cs
- _TimerThread.cs
- SHA384Managed.cs
- Literal.cs