AppMetrics.Client.Tracker.ReportPeriodicInfo C# (CSharp) Method

ReportPeriodicInfo() private method

private ReportPeriodicInfo ( ) : void
return void
        private void ReportPeriodicInfo()
        {
            try
            {
                var curProcess = Process.GetCurrentProcess();

                var workingSet = ToMegabytes((ulong)curProcess.WorkingSet64);
                Log("Client_WorkingSet", workingSet);

                var privateMemorySize = ToMegabytes((ulong)curProcess.PrivateMemorySize64);
                Log("Client_PrivateMemorySize", privateMemorySize);

                var virtualMemorySize = ToMegabytes((ulong)curProcess.VirtualMemorySize64);
                Log("Client_VirtualMemorySize", virtualMemorySize);

                var threadsCount = curProcess.Threads.Count;
                Log("Client_ThreadCount", threadsCount);

                if (!IsUnderMono)
                {
                    var memInfo = SafeNativeMethods.GetMemoryStatus();
                    Log("System_AvailablePhysicalMemory", ToMegabytes(memInfo.ullAvailPhys));
                    Log("System_AvailableVirtualMemory", ToMegabytes(memInfo.ullAvailVirtual));
                }

                var processorSecondsUsed = curProcess.TotalProcessorTime.TotalSeconds;
                if (_lastProcessorTimeUsage != 0)
                {
                    var secondsPassed = (DateTime.UtcNow - _lastSentPeriodic).TotalSeconds;
                    var averageProcessorUsage = ((processorSecondsUsed - _lastProcessorTimeUsage) / secondsPassed) * 100;
                    Log("Client_PeriodProcessorUsage", averageProcessorUsage);
                }
                _lastProcessorTimeUsage = processorSecondsUsed;
            }
            catch (Exception exc)
            {
                Log(exc);
            }
        }