Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / SMDiagnostics / System / ServiceModel / Diagnostics / AssertUtility.cs / 1 / AssertUtility.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- // This class needs to function even if it was built retail. That is, a debug caller calling against a retail // SMDiagnostics should still have asserts fire. To achieve that, we need to define DEBUG here. // We do not do the registry override in retail SMDiagnostics because that would require shipping a test hook. We // do not generally ship test hooks today. #if DEBUG #define DEBUG_FOR_REALS #else #define DEBUG #endif namespace System.ServiceModel.Diagnostics { using System; using System.Diagnostics; using System.Runtime.CompilerServices; using Microsoft.Win32; static class AssertUtility { #if DEBUG_FOR_REALS const string WinFXRegistryKey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP"; const string WcfRegistryKey = AssertUtility.WinFXRegistryKey + @"\v3.0\Setup\Windows Communication Foundation"; const string AssertsFailFastName = "AssertsFailFast"; #endif [Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.DebugAssert instead")] internal static void DebugAssertCore(string message) { try { #if DEBUG_FOR_REALS string debugMessage = "WCF Assert fired! --> " + message + "\r\n"; if (Debugger.IsAttached) { Debugger.Log(0, Debugger.DefaultCategory, debugMessage); Debugger.Break(); } if (NativeMethods.IsDebuggerPresent()) { NativeMethods.OutputDebugString(debugMessage); NativeMethods.DebugBreak(); } // This can be switched to just FailFast (e.g. for the stress lab). RegistryKey key = Registry.LocalMachine.OpenSubKey(AssertUtility.WcfRegistryKey); if (key != null) { object value; using (key) { value = key.GetValue(AssertUtility.AssertsFailFastName); } if (value != null && typeof(int).IsAssignableFrom(value.GetType()) && ((int) value) != 0) { try { if (ExceptionUtility.mainInstance != null) { #pragma warning disable 618 ExceptionUtility.mainInstance.TraceFailFast(message); } else { ExceptionUtility.TraceFailFast(message, new EventLogger("System.ServiceModel", null)); } #pragma warning restore 618 } finally { Environment.FailFast(message); } } } } catch (Exception exception) { message = string.Concat("Exception during assert! [", exception.GetType().Name, ": ", exception.Message, "] --> ", message); throw; #endif } finally { Debug.Assert(false, message); } } // For use within SMDiagnostics. [Conditional("DEBUG")] [Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.DebugAssert instead")] internal static void DebugAssert(bool condition, string message) { if (!condition) { DebugAssert(message); } } [MethodImpl(MethodImplOptions.NoInlining)] [Conditional("DEBUG")] [Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.DebugAssert instead")] internal static void DebugAssert(string message) { DebugAssertCore(message); } } } // 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
- BaseDataListActionList.cs
- FilterQuery.cs
- ManagedWndProcTracker.cs
- TableColumn.cs
- NumericUpDownAccelerationCollection.cs
- GridLength.cs
- ParagraphVisual.cs
- DataGrid.cs
- ImageDesigner.cs
- DataServiceHost.cs
- VBCodeProvider.cs
- AsymmetricSecurityProtocol.cs
- Typeface.cs
- PreviewPrintController.cs
- SevenBitStream.cs
- InnerItemCollectionView.cs
- ListBoxItemWrapperAutomationPeer.cs
- Completion.cs
- BindingNavigator.cs
- SqlSupersetValidator.cs
- AutomationProperties.cs
- InheritanceUI.cs
- Function.cs
- TemplatePagerField.cs
- Binding.cs
- DataListItem.cs
- PackageController.cs
- COAUTHIDENTITY.cs
- EventQueueState.cs
- OrderByExpression.cs
- SystemIPv6InterfaceProperties.cs
- DataBindingExpressionBuilder.cs
- selecteditemcollection.cs
- Internal.cs
- XPathSelectionIterator.cs
- ControlPaint.cs
- SplashScreen.cs
- FormClosingEvent.cs
- PackagePartCollection.cs
- TreeViewImageIndexConverter.cs
- PiiTraceSource.cs
- PageSetupDialog.cs
- PartitionerStatic.cs
- BindingBase.cs
- CodeDomLocalizationProvider.cs
- LineMetrics.cs
- SiteMapProvider.cs
- EventListenerClientSide.cs
- documentsequencetextcontainer.cs
- JsonServiceDocumentSerializer.cs
- SelectionChangedEventArgs.cs
- DrawingGroupDrawingContext.cs
- Vector3DAnimationBase.cs
- CoreSwitches.cs
- ConnectionsZone.cs
- StickyNoteHelper.cs
- MenuItem.cs
- FontEmbeddingManager.cs
- TextSelection.cs
- EntryPointNotFoundException.cs
- SimpleBitVector32.cs
- ExtendedTransformFactory.cs
- Configuration.cs
- MetabaseServerConfig.cs
- nulltextnavigator.cs
- DispatchWrapper.cs
- ChtmlTextBoxAdapter.cs
- control.ime.cs
- CurrentChangedEventManager.cs
- SqlAliaser.cs
- ThousandthOfEmRealDoubles.cs
- ILGenerator.cs
- SecurityResources.cs
- _ProxyChain.cs
- ExpressionBuilder.cs
- CorePropertiesFilter.cs
- ListItemParagraph.cs
- HostUtils.cs
- HighlightComponent.cs
- PasswordBoxAutomationPeer.cs
- XNodeNavigator.cs
- Color.cs
- UInt64Converter.cs
- DefaultValueAttribute.cs
- MediaCommands.cs
- TextBoxLine.cs
- SchemaComplexType.cs
- IdleTimeoutMonitor.cs
- ItemCollection.cs
- SHA256.cs
- ComboBoxRenderer.cs
- UIElement3D.cs
- ApplicationException.cs
- ZeroOpNode.cs
- MarshalByValueComponent.cs
- XPathMultyIterator.cs
- NativeMethods.cs
- TextEffectCollection.cs
- WebPartTracker.cs
- DateTimeFormatInfoScanner.cs