GetCurrentThreadId() private method

private GetCurrentThreadId ( ) : uint
return uint
Example #1
0
        internal static uint GetThreadId()
        {
            uint threadId = UnsafeNclNativeMethods.GetCurrentThreadId();

            if (threadId == 0)
            {
                threadId = (uint)Thread.CurrentThread.GetHashCode();
            }
            return(threadId);
        }
Example #2
0
        internal static uint GetThreadId()
        {
#if MONO
            uint threadId = (uint)Thread.CurrentThread.ManagedThreadId;
#else
            uint threadId = UnsafeNclNativeMethods.GetCurrentThreadId();
#endif
            if (threadId == 0)
            {
                threadId = (uint)Thread.CurrentThread.GetHashCode();
            }
            return(threadId);
        }
Example #3
0
        internal override void PrintLine(string msg)
        {
            if (_Finalized)
            {
                return;
            }
            string spc = "";

            _IamAlive++;

            spc = GetNestingString();

            string tickString = "";

            if (GlobalLog.s_UsePerfCounter)
            {
                long nowTicks;
                SafeNativeMethods.QueryPerformanceCounter(out nowTicks);
                if (_StartTicks > nowTicks) // counter reset, restart from 0
                {
                    _StartTicks = nowTicks;
                }
                nowTicks -= _StartTicks;
                if (GlobalLog.s_UseTimeSpan)
                {
                    tickString = new TimeSpan((long)(nowTicks * _NanosecondsPerTick)).ToString();
                    // note: TimeSpan().ToString() doesn't return the uSec part
                    // if its 0. .ToString() returns [H*]HH:MM:SS:uuuuuuu, hence 16
                    if (tickString.Length < 16)
                    {
                        tickString += ".0000000";
                    }
                }
                else
                {
                    tickString = ((double)nowTicks * _NanosecondsPerTick / 10000).ToString("f3");
                }
            }
            else
            {
                int nowMilliseconds = Environment.TickCount;
                if (_StartMilliseconds > nowMilliseconds)
                {
                    _StartMilliseconds = nowMilliseconds;
                }
                nowMilliseconds -= _StartMilliseconds;
                if (GlobalLog.s_UseTimeSpan)
                {
                    tickString = new TimeSpan(nowMilliseconds * 10000).ToString();
                    // note: TimeSpan().ToString() doesn't return the uSec part
                    // if its 0. .ToString() returns [H*]HH:MM:SS:uuuuuuu, hence 16
                    if (tickString.Length < 16)
                    {
                        tickString += ".0000000";
                    }
                }
                else
                {
                    tickString = nowMilliseconds.ToString();
                }
            }

            uint threadId = 0;

            if (GlobalLog.s_UseThreadId)
            {
                try {
                    object threadData = Thread.GetData(GlobalLog.s_ThreadIdSlot);
                    if (threadData != null)
                    {
                        threadId = (uint)threadData;
                    }
                }
                catch (Exception exception) {
                    if (exception is ThreadAbortException || exception is StackOverflowException || exception is OutOfMemoryException)
                    {
                        throw;
                    }
                }
                if (threadId == 0)
                {
                    threadId = UnsafeNclNativeMethods.GetCurrentThreadId();
                    Thread.SetData(GlobalLog.s_ThreadIdSlot, threadId);
                }
            }
            if (threadId == 0)
            {
                threadId = (uint)Thread.CurrentThread.GetHashCode();
            }

            string str = "[" + threadId.ToString("x8") + "]" + " (" + tickString + ") " + spc + msg;

            lock (this) {
                _AddCount++;
                _Logarray.Add(str);
                int MaxLines = GlobalLog.s_DumpToConsole ? 0 : GlobalLog.MaxLinesBeforeSave;
                if (_AddCount > MaxLines)
                {
                    _AddCount = 0;
                    DumpArray(false);
                    _Logarray = new ArrayList();
                }
            }
        }
Example #4
0
        internal override void PrintLine(string msg)
        {
            if (m_Finalized)
            {
                return;
            }
            string spc = "";

            _IamAlive++;

            spc = GetNestingString();

            string tickString = "";

            if (GlobalLog.s_UsePerfCounter)
            {
                long counter;
                SafeNativeMethods.QueryPerformanceCounter(out counter);
                if (_StartTickCountMicroseconds > counter) // counter reset, restart from 0
                {
                    _StartTickCountMicroseconds = counter;
                }
                counter -= _StartTickCountMicroseconds;
                if (GlobalLog.s_UseTimeSpan)
                {
                    tickString = new TimeSpan(counter / 100).ToString();
                    // note: TimeSpan().ToString() doesn't return the uSec part
                    // if its 0. .ToString() returns [H*]HH:MM:SS:uuuuuuu, hence 16
                    if (tickString.Length < 16)
                    {
                        tickString += ".0000000";
                    }
                }
                else
                {
                    tickString = ((double)counter * _MillisecondsPerTicks).ToString("f3");
                }
            }
            else
            {
                int counter = Environment.TickCount;
                if (_StartTickCountMilliseconds > counter)
                {
                    _StartTickCountMilliseconds = counter;
                }
                counter -= _StartTickCountMilliseconds;
                if (GlobalLog.s_UseTimeSpan)
                {
                    tickString = new TimeSpan(counter * 10000).ToString();
                    // note: TimeSpan().ToString() doesn't return the uSec part
                    // if its 0. .ToString() returns [H*]HH:MM:SS:uuuuuuu, hence 16
                    if (tickString.Length < 16)
                    {
                        tickString += ".0000000";
                    }
                }
                else
                {
                    tickString = (counter).ToString();
                }
            }

            int threadId = 0;

            if (GlobalLog.s_UseThreadId)
            {
                try {
                    threadId = (int)Thread.GetData(GlobalLog.s_ThreadIdSlot);
                }
                catch {
                }
                if (threadId == 0)
                {
                    threadId = UnsafeNclNativeMethods.GetCurrentThreadId();
                    Thread.SetData(GlobalLog.s_ThreadIdSlot, threadId);
                }
            }
            if (threadId == 0)
            {
                threadId = Thread.CurrentThread.GetHashCode();
            }

            string str = String.Format("[{0:x8}]", threadId) + " (" + tickString + ") " + spc + msg;

            Monitor.Enter(this);

            _AddCount++;
            _Logarray.Add(str);

            int MaxLines = GlobalLog.s_DumpToConsole ? 0 : GlobalLog.MaxLinesBeforeSave;

            if (_AddCount > MaxLines)
            {
                _AddCount = 0;

                if (!GlobalLog.SaveOnlyOnError || GlobalLog.s_DumpToConsole)
                {
                    DumpArray(false);
                }

                _Logarray = new ArrayList();
            }

            Monitor.Exit(this);
        }