XamlFxTrace.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / XamlBuildTask / XamlFxTrace.cs / 1305376 / XamlFxTrace.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------

namespace System.Xaml 
{
    using System; 
    using System.Runtime; 
    using System.Reflection;
    using System.Threading; 
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;
    using System.Diagnostics.CodeAnalysis;
 
    static partial class FxTrace
    { 
        const string baseEventSourceName = "System.Xaml"; 
        static string eventSourceName;
        static ExceptionTrace exceptionTrace; 

        public static ExceptionTrace Exception
        {
            get 
            {
                if (exceptionTrace == null) 
                { 
                    // don't need a lock here since a true singleton is not required
                    exceptionTrace = new ExceptionTrace(EventSourceName); 
                }

                return exceptionTrace;
            } 
        }
 
        static string EventSourceName 
        {
            get 
            {
                if (eventSourceName == null)
                {
                    object[] fileVersionList = typeof(FxTrace).Assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false); 
                    if (fileVersionList != null && fileVersionList.Length > 0 && fileVersionList[0] is AssemblyFileVersionAttribute)
                    { 
                        eventSourceName = string.Concat(baseEventSourceName, " ", ((AssemblyFileVersionAttribute)fileVersionList[0]).Version); 
                    }
                    else 
                    {
                        eventSourceName = baseEventSourceName;
                    }
                } 

                return eventSourceName; 
            } 
        }
 
        // This never returns.  The Exception return type lets you write 'throw FailFast()' which tells the compiler/tools that
        // execution stops.
        // This method is static on a beforefieldinit class.  As long as it's built into the calling assembly and that assembly is
        // NGEN'd, it's very unlikely for the call itself to fail. 
        [MethodImpl(MethodImplOptions.NoInlining)]
        [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.AvoidUncalledPrivateCode, 
            Justification = "This template is shared across all assemblies, some of which use this accessor.")] 
        public static Exception FailFast(string message)
        { 
            // The catch is here to force the finally to run, as finallys don't run until the stack walk gets to a catch.
            // The catch makes sure that the finally will run before the stack-walk leaves the frame, but the code inside is impossible to reach.
            try
            { 
                try
                { 
                    FxTrace.Exception.TraceFailFast(message); 
                }
                finally 
                {
                    Environment.FailFast(message);
                }
            } 
            catch
            { 
                throw; 
            }
 
            return null; // we'll never get here since we've just fail-fasted
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK