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
- SafeArrayRankMismatchException.cs
- Connector.cs
- StrokeSerializer.cs
- BitmapMetadata.cs
- GridViewColumn.cs
- TextElement.cs
- XmlReader.cs
- Menu.cs
- CodePageUtils.cs
- CodeConstructor.cs
- ToolStripDropDown.cs
- ApplicationId.cs
- ReliableOutputSessionChannel.cs
- SchemaSetCompiler.cs
- Renderer.cs
- SerializerDescriptor.cs
- WebConfigurationFileMap.cs
- UpdatePanelTriggerCollection.cs
- DataSourceViewSchemaConverter.cs
- SecurityUtils.cs
- ViewPort3D.cs
- SafeBitVector32.cs
- ConditionValidator.cs
- BamlLocalizationDictionary.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- DictionaryTraceRecord.cs
- SafeNativeMethods.cs
- DesignerView.cs
- FontFamilyConverter.cs
- SafeFindHandle.cs
- EditingCommands.cs
- MethodImplAttribute.cs
- UrlRoutingHandler.cs
- CompressEmulationStream.cs
- EntityDataSourceColumn.cs
- AssemblyCollection.cs
- WebService.cs
- TextRunCache.cs
- PeerNameRegistration.cs
- ColumnPropertiesGroup.cs
- SelectionChangedEventArgs.cs
- ExpressionConverter.cs
- ConnectionManagementSection.cs
- LineBreakRecord.cs
- XamlClipboardData.cs
- WebControlAdapter.cs
- ReadOnlyAttribute.cs
- UserMapPath.cs
- ManipulationInertiaStartingEventArgs.cs
- LinkClickEvent.cs
- BitmapEffectDrawingContent.cs
- UnsafeNativeMethodsTablet.cs
- PrivateFontCollection.cs
- BindMarkupExtensionSerializer.cs
- DiagnosticTraceSource.cs
- EntityDataSourceContextCreatingEventArgs.cs
- ViewStateModeByIdAttribute.cs
- FilteredAttributeCollection.cs
- CodeMethodInvokeExpression.cs
- CodeCommentStatementCollection.cs
- ListComponentEditorPage.cs
- ScanQueryOperator.cs
- NameTable.cs
- ListControl.cs
- ByValueEqualityComparer.cs
- PrintingPermission.cs
- SqlRowUpdatingEvent.cs
- XamlStream.cs
- DataGridPagerStyle.cs
- IntranetCredentialPolicy.cs
- CompositeCollection.cs
- CacheAxisQuery.cs
- SoapHelper.cs
- _AuthenticationState.cs
- BinHexEncoding.cs
- MarkedHighlightComponent.cs
- hresults.cs
- PassportPrincipal.cs
- ChannelFactoryBase.cs
- Debug.cs
- SqlRetyper.cs
- HttpException.cs
- PrinterUnitConvert.cs
- TaiwanLunisolarCalendar.cs
- SendParametersContent.cs
- OdbcConnectionHandle.cs
- WorkItem.cs
- GridViewItemAutomationPeer.cs
- DescendentsWalker.cs
- EncoderParameters.cs
- X509AsymmetricSecurityKey.cs
- HttpCookie.cs
- DiscreteKeyFrames.cs
- SelectionUIService.cs
- EdgeModeValidation.cs
- FunctionNode.cs
- ScriptingAuthenticationServiceSection.cs
- WindowsEditBox.cs
- StorageConditionPropertyMapping.cs
- CompiledRegexRunnerFactory.cs