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
- Environment.cs
- AutoResetEvent.cs
- ParameterRetriever.cs
- Message.cs
- _LocalDataStoreMgr.cs
- TextLineBreak.cs
- Assembly.cs
- CodeObjectCreateExpression.cs
- PbrsForward.cs
- ContextStaticAttribute.cs
- NetworkStream.cs
- BinaryUtilClasses.cs
- WorkflowMarkupElementEventArgs.cs
- SqlBooleanMismatchVisitor.cs
- URIFormatException.cs
- FileSystemEventArgs.cs
- StreamGeometry.cs
- VectorAnimationUsingKeyFrames.cs
- DatatypeImplementation.cs
- GridViewRowPresenterBase.cs
- DataGridViewLinkColumn.cs
- HwndMouseInputProvider.cs
- CurrencyManager.cs
- DesignerProperties.cs
- SqlDataAdapter.cs
- AssemblyAttributes.cs
- ObjectDataSource.cs
- FileAuthorizationModule.cs
- SqlRowUpdatingEvent.cs
- PageThemeParser.cs
- OwnerDrawPropertyBag.cs
- InternalConfigRoot.cs
- DragStartedEventArgs.cs
- DataExpression.cs
- DetailsViewInsertedEventArgs.cs
- ToolStripContentPanel.cs
- SelectedGridItemChangedEvent.cs
- _SslState.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- WebDisplayNameAttribute.cs
- UnmanagedMemoryStream.cs
- GiveFeedbackEvent.cs
- XsltArgumentList.cs
- SkewTransform.cs
- DrawToolTipEventArgs.cs
- FileChangeNotifier.cs
- TabItem.cs
- ComponentEvent.cs
- TextTreeDeleteContentUndoUnit.cs
- CanExecuteRoutedEventArgs.cs
- TreeNodeEventArgs.cs
- SR.cs
- BinaryNode.cs
- DbConnectionInternal.cs
- HtmlImageAdapter.cs
- MsmqActivation.cs
- Stylus.cs
- DocumentAutomationPeer.cs
- MembershipValidatePasswordEventArgs.cs
- WinFormsUtils.cs
- BindStream.cs
- WebPartHelpVerb.cs
- TableRowCollection.cs
- DataGridViewRowEventArgs.cs
- URLEditor.cs
- ProtectedProviderSettings.cs
- StringArrayConverter.cs
- EventSourceCreationData.cs
- Errors.cs
- FileChangeNotifier.cs
- SystemResources.cs
- _LocalDataStore.cs
- TextPointer.cs
- ColorTransform.cs
- PropertyAccessVisitor.cs
- WebPartZoneBase.cs
- SettingsProviderCollection.cs
- isolationinterop.cs
- ServicePoint.cs
- XMLDiffLoader.cs
- DecoratedNameAttribute.cs
- ActionItem.cs
- ValidationErrorEventArgs.cs
- OutKeywords.cs
- ValidationRuleCollection.cs
- CodeTypeDelegate.cs
- ReflectionPermission.cs
- ActivityMarkupSerializationProvider.cs
- CmsInterop.cs
- NetworkInformationPermission.cs
- TrustManagerMoreInformation.cs
- ScriptingWebServicesSectionGroup.cs
- XmlWhitespace.cs
- XmlReaderSettings.cs
- TextTreeText.cs
- TypeDependencyAttribute.cs
- ToolStripItemCollection.cs
- SecurityPermission.cs
- DesignerTransactionCloseEvent.cs
- HotCommands.cs