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
- CompositeActivityCodeGenerator.cs
- FontDialog.cs
- SmtpDateTime.cs
- ForceCopyBuildProvider.cs
- _HeaderInfoTable.cs
- EtwTrace.cs
- ToolbarAUtomationPeer.cs
- Point3DCollectionConverter.cs
- Image.cs
- Imaging.cs
- SpecialTypeDataContract.cs
- SelectionHighlightInfo.cs
- BaseParagraph.cs
- ExceptionValidationRule.cs
- TcpHostedTransportConfiguration.cs
- Journaling.cs
- ArrangedElement.cs
- AutoGeneratedField.cs
- TrackBar.cs
- RoleManagerSection.cs
- FixedSOMTableRow.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- Input.cs
- SecurityListenerSettingsLifetimeManager.cs
- Repeater.cs
- IsolatedStorageFile.cs
- EntityDataSourceWizardForm.cs
- ConsumerConnectionPoint.cs
- BooleanFacetDescriptionElement.cs
- NotifyParentPropertyAttribute.cs
- MatrixUtil.cs
- CompModSwitches.cs
- NamedPipeTransportElement.cs
- ListViewGroup.cs
- ListContractAdapter.cs
- mediaeventshelper.cs
- Aes.cs
- XNodeNavigator.cs
- DataSourceHelper.cs
- RotateTransform3D.cs
- Byte.cs
- PrintSchema.cs
- Ticks.cs
- DrawingDrawingContext.cs
- ToolStripDropDownClosedEventArgs.cs
- XsltLibrary.cs
- SiteMapNodeCollection.cs
- ScrollItemPattern.cs
- WebDisplayNameAttribute.cs
- ExpressionEditor.cs
- XmlChildNodes.cs
- CodeNamespaceImport.cs
- RelationshipNavigation.cs
- ScriptHandlerFactory.cs
- ISAPIApplicationHost.cs
- ReflectionUtil.cs
- X509SecurityTokenAuthenticator.cs
- SQLDateTimeStorage.cs
- ApplicationDirectoryMembershipCondition.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- ModuleBuilderData.cs
- JobCollate.cs
- DuplicateWaitObjectException.cs
- CngProvider.cs
- TabPage.cs
- FacetValueContainer.cs
- Effect.cs
- FixedDocumentSequencePaginator.cs
- DesignBindingConverter.cs
- QilFactory.cs
- PeerNameRegistration.cs
- DataSourceSelectArguments.cs
- TextDocumentView.cs
- ReferenceAssemblyAttribute.cs
- Transform3DGroup.cs
- _NTAuthentication.cs
- XmlSerializationWriter.cs
- UmAlQuraCalendar.cs
- LocalFileSettingsProvider.cs
- DataGridTextBox.cs
- QuaternionValueSerializer.cs
- control.ime.cs
- AccessibleObject.cs
- QueryContinueDragEvent.cs
- CodeAssignStatement.cs
- SourceChangedEventArgs.cs
- SliderAutomationPeer.cs
- AudioLevelUpdatedEventArgs.cs
- EntityDataSourceDesigner.cs
- AuthenticationManager.cs
- FontUnitConverter.cs
- XmlNamedNodeMap.cs
- HtmlControl.cs
- COM2PropertyPageUITypeConverter.cs
- IncrementalReadDecoders.cs
- CodeSubDirectoriesCollection.cs
- FontInfo.cs
- ApplyTemplatesAction.cs
- KnownIds.cs
- AdRotator.cs