private void ThreadProc()

in Source/Tx.Windows/EtwNative/EtwListener.cs [63:100]


        private void ThreadProc()
        {
            int error;

            _handle = EtwNativeMethods.OpenTrace(ref _logFile);

            if (_handle == EtwNativeMethods.InvalidHandle)
            {
                error = Marshal.GetLastWin32Error();
                if (error == EtwNativeMethods.ErrorNotFound)
                {
                    _observer.OnError(new Exception("Could not find ETW real-time session " + _logFile.LoggerName));
                    return;
                }
                else
                {
                    _observer.OnError(new Win32Exception(error));
                    return;
                }
            }

            try
            {
                error = EtwNativeMethods.ProcessTrace(new[] {_handle}, 1, IntPtr.Zero, IntPtr.Zero);
            }
            catch (Exception ex)
            {
                _observer.OnError(ex);
                return;
            }
            if (error != 0)
            {
                _observer.OnError(new Win32Exception(error));
                return;
            }

            _observer.OnCompleted();
        }