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
- StorageSetMapping.cs
- mediapermission.cs
- ZipIOExtraFieldPaddingElement.cs
- TimelineGroup.cs
- ExpressionEditorAttribute.cs
- CompressEmulationStream.cs
- ObjectQueryExecutionPlan.cs
- XmlDeclaration.cs
- CultureSpecificCharacterBufferRange.cs
- ListViewTableCell.cs
- ScaleTransform.cs
- BCryptNative.cs
- ZipIOExtraFieldZip64Element.cs
- RepeatButton.cs
- AbsoluteQuery.cs
- DataGridViewAddColumnDialog.cs
- PowerStatus.cs
- EditBehavior.cs
- RecognizedAudio.cs
- HyperLinkColumn.cs
- OleDbException.cs
- metadatamappinghashervisitor.cs
- Int32KeyFrameCollection.cs
- recordstatefactory.cs
- ResourcePermissionBase.cs
- XmlSchemaFacet.cs
- Queue.cs
- Light.cs
- InstancePersistenceCommandException.cs
- MasterPageParser.cs
- ExpressionCopier.cs
- SspiNegotiationTokenProvider.cs
- Select.cs
- Utils.cs
- ContainerTracking.cs
- SimpleTypeResolver.cs
- PkcsMisc.cs
- InvalidPrinterException.cs
- BitmapSizeOptions.cs
- EventEntry.cs
- LabelExpression.cs
- StringComparer.cs
- X509Chain.cs
- ToolStripItem.cs
- GorillaCodec.cs
- Blend.cs
- HtmlCalendarAdapter.cs
- ColumnTypeConverter.cs
- PackagingUtilities.cs
- TdsRecordBufferSetter.cs
- MenuItem.cs
- AtomMaterializer.cs
- ControlCollection.cs
- PaperSize.cs
- DataGridViewLayoutData.cs
- XmlJsonReader.cs
- Rotation3DAnimation.cs
- TextParentUndoUnit.cs
- Gdiplus.cs
- ObjectSpanRewriter.cs
- DbXmlEnabledProviderManifest.cs
- NamespaceDecl.cs
- PrinterResolution.cs
- GridViewItemAutomationPeer.cs
- KoreanCalendar.cs
- CellLabel.cs
- DataGridViewDataConnection.cs
- SwitchLevelAttribute.cs
- UriTemplateMatch.cs
- IdnElement.cs
- ModelFactory.cs
- FlowDocumentPaginator.cs
- DataGridItemAttachedStorage.cs
- TopClause.cs
- TextEditorTables.cs
- SignatureHelper.cs
- SecurityUtils.cs
- ReturnEventArgs.cs
- TextTreeUndo.cs
- MetadataItemEmitter.cs
- BlobPersonalizationState.cs
- Border.cs
- XamlPointCollectionSerializer.cs
- CoTaskMemSafeHandle.cs
- ServiceElementCollection.cs
- DoubleConverter.cs
- ErrorTolerantObjectWriter.cs
- Attributes.cs
- ListItemParagraph.cs
- ConditionCollection.cs
- DispatcherEventArgs.cs
- ExtensionSimplifierMarkupObject.cs
- UriTemplateClientFormatter.cs
- _NativeSSPI.cs
- RawStylusSystemGestureInputReport.cs
- UidPropertyAttribute.cs
- XmlDataSourceView.cs
- WmlCommandAdapter.cs
- SQLBinary.cs
- WebPartManager.cs