Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / MS / Internal / Utility / MonitorWrapper.cs / 1 / 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; } } 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
- BamlBinaryWriter.cs
- Blend.cs
- FrugalMap.cs
- BrowserDefinitionCollection.cs
- DataExpression.cs
- PathFigure.cs
- FastPropertyAccessor.cs
- ToolStripDropDownButton.cs
- OleAutBinder.cs
- TreeNodeBinding.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- TreeViewImageKeyConverter.cs
- SynchronizationFilter.cs
- EncryptedKeyIdentifierClause.cs
- IntSecurity.cs
- ListenDesigner.cs
- RefreshPropertiesAttribute.cs
- RegexGroupCollection.cs
- EntityViewGenerator.cs
- PointHitTestResult.cs
- TargetFrameworkAttribute.cs
- EntitySqlException.cs
- DataGridTextColumn.cs
- HtmlTitle.cs
- Deflater.cs
- SystemTcpStatistics.cs
- SharedTcpTransportManager.cs
- embossbitmapeffect.cs
- ImportStoreException.cs
- EventRouteFactory.cs
- SafeFileHandle.cs
- WinFormsSecurity.cs
- EntityCommandCompilationException.cs
- TabControlCancelEvent.cs
- HtmlInputText.cs
- RawContentTypeMapper.cs
- MD5CryptoServiceProvider.cs
- ActivityExecutor.cs
- TextBoxLine.cs
- DataGridViewHeaderCell.cs
- CompositeCollectionView.cs
- TypeCodeDomSerializer.cs
- CommandBindingCollection.cs
- GlyphRun.cs
- XPathNodeIterator.cs
- PostBackOptions.cs
- DataGrid.cs
- InheritanceUI.cs
- EntitySqlException.cs
- SoapIncludeAttribute.cs
- ASCIIEncoding.cs
- Typography.cs
- InterleavedZipPartStream.cs
- CodeRegionDirective.cs
- TextServicesDisplayAttribute.cs
- Vector3DAnimation.cs
- SspiNegotiationTokenProvider.cs
- TextServicesManager.cs
- ListView.cs
- WebPartConnection.cs
- LinqToSqlWrapper.cs
- AsyncDataRequest.cs
- Int32CAMarshaler.cs
- DPTypeDescriptorContext.cs
- CheckoutException.cs
- BufferCache.cs
- AlignmentXValidation.cs
- DataQuery.cs
- BindingElementCollection.cs
- InstanceDescriptor.cs
- PolyBezierSegmentFigureLogic.cs
- CompositeFontInfo.cs
- ExpressionNormalizer.cs
- ResourceSet.cs
- Material.cs
- PathBox.cs
- HandleValueEditor.cs
- FilterException.cs
- WsrmFault.cs
- EpmCustomContentWriterNodeData.cs
- EmbeddedMailObject.cs
- SafeLocalAllocation.cs
- XpsFilter.cs
- InfoCardHelper.cs
- SetStateEventArgs.cs
- XmlUtilWriter.cs
- RoleService.cs
- XmlCharCheckingReader.cs
- DisplayNameAttribute.cs
- ToolboxDataAttribute.cs
- MDIWindowDialog.cs
- DependentList.cs
- SqlDataSourceStatusEventArgs.cs
- externdll.cs
- AmbientLight.cs
- IntSecurity.cs
- VectorAnimation.cs
- xsdvalidator.cs
- SectionXmlInfo.cs
- DataGridViewTextBoxEditingControl.cs