Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Utility / MonitorWrapper.cs / 1305600 / MonitorWrapper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) 2005 by Microsoft Corporation. All rights reserved. // // // // Description: Wraps System.Threading.Monitor and adds a busy flag // //--------------------------------------------------------------------------- using System; using System.Threading; using System.Windows; using MS.Internal; namespace MS.Internal.Utility { ////// Monitor with Busy flag while it is entered. /// internal class MonitorWrapper { public IDisposable Enter() { Monitor.Enter(_syncRoot); Interlocked.Increment(ref _enterCount); return new MonitorHelper(this); } public void Exit() { int count = Interlocked.Decrement(ref _enterCount); Invariant.Assert(count >= 0, "unmatched call to MonitorWrapper.Exit"); Monitor.Exit(_syncRoot); } public bool Busy { get { return (_enterCount > 0); } } int _enterCount; object _syncRoot = new object(); private class MonitorHelper : IDisposable { public MonitorHelper(MonitorWrapper monitorWrapper) { _monitorWrapper = monitorWrapper; } public void Dispose() { if (_monitorWrapper != null) { _monitorWrapper.Exit(); _monitorWrapper = null; } GC.SuppressFinalize(this); } private MonitorWrapper _monitorWrapper; } } } // 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
- GroupStyle.cs
- X509Certificate2Collection.cs
- ToolTip.cs
- AxHostDesigner.cs
- FixedNode.cs
- DropShadowEffect.cs
- FlowDocumentPage.cs
- TimelineCollection.cs
- X509RecipientCertificateClientElement.cs
- grammarelement.cs
- IPAddress.cs
- ProtocolsConfigurationEntry.cs
- Accessible.cs
- SecureConversationVersion.cs
- Variant.cs
- ContainsRowNumberChecker.cs
- NamedPipeTransportElement.cs
- FileDetails.cs
- XmlUnspecifiedAttribute.cs
- ToolboxItemSnapLineBehavior.cs
- ValuePattern.cs
- GeometryGroup.cs
- ReaderWriterLock.cs
- AgileSafeNativeMemoryHandle.cs
- DesignerDataStoredProcedure.cs
- ReliabilityContractAttribute.cs
- CqlErrorHelper.cs
- PrimitiveType.cs
- WmlObjectListAdapter.cs
- BaseDataList.cs
- PublishLicense.cs
- OdbcEnvironmentHandle.cs
- AssemblyBuilder.cs
- TextureBrush.cs
- BooleanKeyFrameCollection.cs
- DependencyPropertyChangedEventArgs.cs
- TextServicesHost.cs
- ListControlConvertEventArgs.cs
- TextElement.cs
- SubtreeProcessor.cs
- SimpleWebHandlerParser.cs
- ListViewCommandEventArgs.cs
- MemoryMappedViewStream.cs
- ActivityDesignerLayoutSerializers.cs
- DataServiceQueryProvider.cs
- TableCell.cs
- HistoryEventArgs.cs
- ContentElementAutomationPeer.cs
- XsdBuildProvider.cs
- GridViewRowPresenter.cs
- GraphicsContainer.cs
- MergeFilterQuery.cs
- NestPullup.cs
- InputScope.cs
- PrintDialog.cs
- BindingUtils.cs
- RelatedPropertyManager.cs
- TableCell.cs
- EntityClassGenerator.cs
- RequestCacheValidator.cs
- ScrollBarAutomationPeer.cs
- SelectionWordBreaker.cs
- ListMarkerLine.cs
- SctClaimDictionary.cs
- XmlSerializationGeneratedCode.cs
- ReflectEventDescriptor.cs
- CharUnicodeInfo.cs
- SecureStringHasher.cs
- handlecollector.cs
- SafeViewOfFileHandle.cs
- webclient.cs
- SqlTransaction.cs
- Compiler.cs
- TextRangeBase.cs
- LogRestartAreaEnumerator.cs
- InstanceLockLostException.cs
- CapabilitiesAssignment.cs
- ZipIOCentralDirectoryBlock.cs
- ValidatorAttribute.cs
- Axis.cs
- AnchoredBlock.cs
- XmlNodeChangedEventArgs.cs
- Pkcs7Signer.cs
- FlowDocumentReaderAutomationPeer.cs
- FirewallWrapper.cs
- Image.cs
- Bezier.cs
- ConstraintEnumerator.cs
- Vertex.cs
- PopupRoot.cs
- XmlTextReader.cs
- CachingHintValidation.cs
- UriScheme.cs
- Pens.cs
- DataSourceHelper.cs
- MetafileHeaderWmf.cs
- DataBoundControlAdapter.cs
- TrackingProfileSerializer.cs
- ClientTarget.cs
- XmlIgnoreAttribute.cs