Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / CompMod / System / Diagnostics / Switch.cs / 1 / Switch.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Diagnostics { using System; using System.Security; using System.Security.Permissions; using System.Threading; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; using System.Configuration; using System.Xml.Serialization; ////// public abstract class Switch { private SwitchElementsCollection switchSettings; private string description; private string displayName; private int switchSetting = 0; private bool initialized = false; private bool initializing = false; private string switchValueString = String.Empty; private StringDictionary attributes; private string defaultValue; private static ListProvides an ///base class to /// create new debugging and tracing switches. switches = new List (); /// /// protected Switch(string displayName, string description) : this(displayName, description, "0") { } protected Switch(string displayName, string description, string defaultSwitchValue) { // displayName is used as a hashtable key, so it can never // be null. if (displayName == null) displayName = string.Empty; this.displayName = displayName; this.description = description; lock (switches) { switches.Add(new WeakReference(this)); } defaultValue = defaultSwitchValue; } [XmlIgnore] public StringDictionary Attributes { get { Initialize(); if (attributes == null) attributes = new StringDictionary(); return attributes; } } ///Initializes a new instance of the ////// class. /// public string DisplayName { get { return displayName; } } ///Gets a name used to identify the switch. ////// public string Description { get { return (description == null) ? string.Empty : description; } } ///Gets a description of the switch. ////// protected int SwitchSetting { get { if (!initialized) { if (!InitializeWithStatus()) return 0; OnSwitchSettingChanged(); } return switchSetting; } set { initialized = true; if (switchSetting != value) { switchSetting = value; OnSwitchSettingChanged(); } } } protected string Value { get { Initialize(); return switchValueString; } set { Initialize(); switchValueString = value; try { OnValueChanged(); } catch (ArgumentException e) { throw new ConfigurationErrorsException(SR.GetString(SR.BadConfigSwitchValue, DisplayName), e); } catch (FormatException e) { throw new ConfigurationErrorsException(SR.GetString(SR.BadConfigSwitchValue, DisplayName), e); } catch (OverflowException e) { throw new ConfigurationErrorsException(SR.GetString(SR.BadConfigSwitchValue, DisplayName), e); } } } private void Initialize() { InitializeWithStatus(); } private bool InitializeWithStatus() { if (!initialized) { if (initializing) return false; initializing = true; if (switchSettings == null) { if (!InitializeConfigSettings()) return false; } if (switchSettings != null) { SwitchElement mySettings = switchSettings[displayName]; if (mySettings != null) { string value = mySettings.Value; if (value != null) { this.Value = value; } else this.Value = defaultValue; try { TraceUtils.VerifyAttributes(mySettings.Attributes, GetSupportedAttributes(), this); } catch (ConfigurationException) { // if VerifyAttributes throws, clean up a little bit so we're not in a bad state. initialized = false; initializing = false; throw; } attributes = new StringDictionary(); attributes.contents = mySettings.Attributes; } else { // We don't use the property here because we don't want to catch exceptions // and rethrow them as ConfigurationException. In this case there's no config. switchValueString = defaultValue; OnValueChanged(); } } else { // We don't use the property here because we don't want to catch exceptions // and rethrow them as ConfigurationException. In this case there's no config. switchValueString = defaultValue; OnValueChanged(); } initialized = true; initializing = false; } return true; } private bool InitializeConfigSettings() { if (switchSettings != null) return true; if (!DiagnosticsConfiguration.CanInitialize()) return false; // This hashtable is case-insensitive. switchSettings = DiagnosticsConfiguration.SwitchSettings; return true; } virtual protected internal string[] GetSupportedAttributes() { return null; } ////// Indicates the current setting for this switch. /// ////// This method is invoked when a switch setting has been changed. It will /// be invoked the first time a switch reads its value from the registry /// or environment, and then it will be invoked each time the switch's /// value is changed. /// protected virtual void OnSwitchSettingChanged() { } protected virtual void OnValueChanged() { SwitchSetting = Int32.Parse(Value, CultureInfo.InvariantCulture); } internal static void RefreshAll() { lock (switches) { for (int i=0; i// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Diagnostics { using System; using System.Security; using System.Security.Permissions; using System.Threading; using System.Runtime.InteropServices; using Microsoft.Win32; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; using System.Configuration; using System.Xml.Serialization; /// /// public abstract class Switch { private SwitchElementsCollection switchSettings; private string description; private string displayName; private int switchSetting = 0; private bool initialized = false; private bool initializing = false; private string switchValueString = String.Empty; private StringDictionary attributes; private string defaultValue; private static ListProvides an ///base class to /// create new debugging and tracing switches. switches = new List (); /// /// protected Switch(string displayName, string description) : this(displayName, description, "0") { } protected Switch(string displayName, string description, string defaultSwitchValue) { // displayName is used as a hashtable key, so it can never // be null. if (displayName == null) displayName = string.Empty; this.displayName = displayName; this.description = description; lock (switches) { switches.Add(new WeakReference(this)); } defaultValue = defaultSwitchValue; } [XmlIgnore] public StringDictionary Attributes { get { Initialize(); if (attributes == null) attributes = new StringDictionary(); return attributes; } } ///Initializes a new instance of the ////// class. /// public string DisplayName { get { return displayName; } } ///Gets a name used to identify the switch. ////// public string Description { get { return (description == null) ? string.Empty : description; } } ///Gets a description of the switch. ////// protected int SwitchSetting { get { if (!initialized) { if (!InitializeWithStatus()) return 0; OnSwitchSettingChanged(); } return switchSetting; } set { initialized = true; if (switchSetting != value) { switchSetting = value; OnSwitchSettingChanged(); } } } protected string Value { get { Initialize(); return switchValueString; } set { Initialize(); switchValueString = value; try { OnValueChanged(); } catch (ArgumentException e) { throw new ConfigurationErrorsException(SR.GetString(SR.BadConfigSwitchValue, DisplayName), e); } catch (FormatException e) { throw new ConfigurationErrorsException(SR.GetString(SR.BadConfigSwitchValue, DisplayName), e); } catch (OverflowException e) { throw new ConfigurationErrorsException(SR.GetString(SR.BadConfigSwitchValue, DisplayName), e); } } } private void Initialize() { InitializeWithStatus(); } private bool InitializeWithStatus() { if (!initialized) { if (initializing) return false; initializing = true; if (switchSettings == null) { if (!InitializeConfigSettings()) return false; } if (switchSettings != null) { SwitchElement mySettings = switchSettings[displayName]; if (mySettings != null) { string value = mySettings.Value; if (value != null) { this.Value = value; } else this.Value = defaultValue; try { TraceUtils.VerifyAttributes(mySettings.Attributes, GetSupportedAttributes(), this); } catch (ConfigurationException) { // if VerifyAttributes throws, clean up a little bit so we're not in a bad state. initialized = false; initializing = false; throw; } attributes = new StringDictionary(); attributes.contents = mySettings.Attributes; } else { // We don't use the property here because we don't want to catch exceptions // and rethrow them as ConfigurationException. In this case there's no config. switchValueString = defaultValue; OnValueChanged(); } } else { // We don't use the property here because we don't want to catch exceptions // and rethrow them as ConfigurationException. In this case there's no config. switchValueString = defaultValue; OnValueChanged(); } initialized = true; initializing = false; } return true; } private bool InitializeConfigSettings() { if (switchSettings != null) return true; if (!DiagnosticsConfiguration.CanInitialize()) return false; // This hashtable is case-insensitive. switchSettings = DiagnosticsConfiguration.SwitchSettings; return true; } virtual protected internal string[] GetSupportedAttributes() { return null; } ////// Indicates the current setting for this switch. /// ////// This method is invoked when a switch setting has been changed. It will /// be invoked the first time a switch reads its value from the registry /// or environment, and then it will be invoked each time the switch's /// value is changed. /// protected virtual void OnSwitchSettingChanged() { } protected virtual void OnValueChanged() { SwitchSetting = Int32.Parse(Value, CultureInfo.InvariantCulture); } internal static void RefreshAll() { lock (switches) { for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Win32Native.cs
- TdsParserStaticMethods.cs
- WindowsImpersonationContext.cs
- MatrixAnimationBase.cs
- Semaphore.cs
- AtomicFile.cs
- BinaryCommonClasses.cs
- DelimitedListTraceListener.cs
- AccessibleObject.cs
- ToolStripContentPanel.cs
- DesignOnlyAttribute.cs
- IOException.cs
- DefaultTraceListener.cs
- DetailsViewPagerRow.cs
- TextViewSelectionProcessor.cs
- EditorPartChrome.cs
- OutputCacheSettings.cs
- EntryIndex.cs
- wmiprovider.cs
- SendMailErrorEventArgs.cs
- XComponentModel.cs
- TranslateTransform.cs
- MatrixCamera.cs
- AnnotationResource.cs
- ThreadSafeMessageFilterTable.cs
- AsyncStreamReader.cs
- TextCharacters.cs
- MailAddress.cs
- TableCell.cs
- BamlRecords.cs
- VolatileEnlistmentMultiplexing.cs
- ConnectionPointCookie.cs
- ComplexObject.cs
- DataMemberFieldConverter.cs
- WSUtilitySpecificationVersion.cs
- WebControlParameterProxy.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- HttpWebRequest.cs
- Vector3DCollectionConverter.cs
- DBCSCodePageEncoding.cs
- SecureStringHasher.cs
- XhtmlCssHandler.cs
- WriteTimeStream.cs
- CodeEntryPointMethod.cs
- AudioException.cs
- TableLayoutCellPaintEventArgs.cs
- ObjectPersistData.cs
- ErrorFormatter.cs
- EdmComplexPropertyAttribute.cs
- DataColumnMappingCollection.cs
- PeerNameRecordCollection.cs
- Style.cs
- loginstatus.cs
- ToolStripDropTargetManager.cs
- SafeWaitHandle.cs
- Image.cs
- PenThreadPool.cs
- SourceItem.cs
- StorageComplexPropertyMapping.cs
- BufferedWebEventProvider.cs
- _LocalDataStoreMgr.cs
- DataGridViewColumnStateChangedEventArgs.cs
- RetrieveVirtualItemEventArgs.cs
- PersonalizationState.cs
- StringUtil.cs
- ZipIOExtraFieldPaddingElement.cs
- PathFigureCollection.cs
- StylusSystemGestureEventArgs.cs
- FtpWebResponse.cs
- WebPartVerbsEventArgs.cs
- Visual3DCollection.cs
- SetState.cs
- HttpListenerRequest.cs
- MarkupObject.cs
- CompletedAsyncResult.cs
- OperationSelectorBehavior.cs
- Itemizer.cs
- List.cs
- HtmlElementErrorEventArgs.cs
- DragDropManager.cs
- RuleSettings.cs
- XmlImplementation.cs
- Page.cs
- ArgumentOutOfRangeException.cs
- UniqueEventHelper.cs
- ResourceReferenceExpression.cs
- Stopwatch.cs
- GeneralTransform.cs
- WebHostScriptMappingsInstallComponent.cs
- WebPartPersonalization.cs
- LabelDesigner.cs
- IgnoreSectionHandler.cs
- OdbcRowUpdatingEvent.cs
- EventPrivateKey.cs
- FloaterParaClient.cs
- HttpListenerPrefixCollection.cs
- XmlSubtreeReader.cs
- ListViewCommandEventArgs.cs
- ZoneMembershipCondition.cs
- _UriTypeConverter.cs