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
- ProfileService.cs
- ModuleBuilderData.cs
- ActivitySurrogate.cs
- TextEditorCopyPaste.cs
- LogSwitch.cs
- DataRowCollection.cs
- AgileSafeNativeMemoryHandle.cs
- SafePointer.cs
- DecimalConstantAttribute.cs
- Item.cs
- TextParentUndoUnit.cs
- SafePointer.cs
- HostedHttpContext.cs
- DownloadProgressEventArgs.cs
- MetabaseSettingsIis7.cs
- WizardStepCollectionEditor.cs
- HtmlInputRadioButton.cs
- FormsAuthenticationUserCollection.cs
- SingleAnimation.cs
- XmlSchemaComplexContentExtension.cs
- LinkedResourceCollection.cs
- WCFServiceClientProxyGenerator.cs
- MenuScrollingVisibilityConverter.cs
- SByte.cs
- DynamicMetaObject.cs
- OrderedDictionary.cs
- Constraint.cs
- EntityTypeEmitter.cs
- EventLogger.cs
- XPathNodeInfoAtom.cs
- WebConfigurationFileMap.cs
- NestedContainer.cs
- TypeInformation.cs
- ArgumentsParser.cs
- FunctionOverloadResolver.cs
- SqlHelper.cs
- ResourceAttributes.cs
- ManipulationDeltaEventArgs.cs
- GuidConverter.cs
- RSAOAEPKeyExchangeDeformatter.cs
- TraceSection.cs
- DataGridViewCellStyle.cs
- ADMembershipUser.cs
- BitmapCache.cs
- BrowserDefinition.cs
- HttpConfigurationContext.cs
- x509utils.cs
- MobileControl.cs
- GcHandle.cs
- QualifiedCellIdBoolean.cs
- DataGridViewCheckBoxCell.cs
- objectresult_tresulttype.cs
- PermissionSet.cs
- WindowsSlider.cs
- CellTreeNodeVisitors.cs
- SystemInfo.cs
- Action.cs
- CookieProtection.cs
- cookieexception.cs
- OutputScopeManager.cs
- JsonQNameDataContract.cs
- BitmapInitialize.cs
- BitmapEffectDrawing.cs
- HttpWebRequestElement.cs
- InvalidChannelBindingException.cs
- HScrollBar.cs
- AutomationPeer.cs
- DateTimeUtil.cs
- Blend.cs
- ReferencedAssembly.cs
- ListViewGroupConverter.cs
- LinkLabelLinkClickedEvent.cs
- TemplateControlCodeDomTreeGenerator.cs
- RestHandler.cs
- PeerDefaultCustomResolverClient.cs
- Size3DConverter.cs
- PieceNameHelper.cs
- PipeException.cs
- HtmlLink.cs
- ProxySimple.cs
- XmlUtf8RawTextWriter.cs
- CommonDialog.cs
- SecurityTokenResolver.cs
- TrackingServices.cs
- StatusBarItemAutomationPeer.cs
- CompiledQuery.cs
- CodePageUtils.cs
- AnimatedTypeHelpers.cs
- LineServicesCallbacks.cs
- recordstatescratchpad.cs
- ThicknessConverter.cs
- CodeTypeConstructor.cs
- IDispatchConstantAttribute.cs
- SettingsPropertyIsReadOnlyException.cs
- MD5.cs
- ExpressionLexer.cs
- GuidTagList.cs
- UrlAuthFailureHandler.cs
- ObservableCollectionDefaultValueFactory.cs
- QuaternionAnimationUsingKeyFrames.cs