private static void StatsSenderThread(string vmName) { DateTime utcNow = DateTime.UtcNow; long fromTicks = TimelineStatsSender.TicksInSeconds(); while (true) { try { TimelineStatsSender.sEventQueueMutex.WaitOne(); if (TimelineStatsSender.sEventQueue.Count <= 0) { TimelineStatsSender.sEventQueueMutex.ReleaseMutex(); Thread.Sleep(1000); } else { TimelineStatsSender.TimelineEvent timelineEvent = TimelineStatsSender.sEventQueue.Dequeue(); TimelineStatsSender.sEventQueueMutex.ReleaseMutex(); TimelineStatsSender.SendTimelineStats(timelineEvent.Time, timelineEvent.S1, timelineEvent.Ticks - fromTicks, timelineEvent.S2, timelineEvent.S3, "", "", "", "", "", "", utcNow, timelineEvent.Time, fromTicks, timelineEvent.Ticks, vmName); } } catch (Exception ex) { Logger.Warning("Exception in sending timeline stats: " + ex.ToString()); Thread.Sleep(1000); } } }
public TimelineEvent(string evt, string s1, string s2, string s3) { this.Time = DateTime.UtcNow; this.Ticks = TimelineStatsSender.TicksInSeconds(); this.Event = evt; this.S1 = s1; this.S2 = s2; this.S3 = s3; }