|
@@ -0,0 +1,71 @@
|
|
|
+
|
|
|
+namespace StationProbe
|
|
|
+{
|
|
|
+ internal class Counter
|
|
|
+ {
|
|
|
+ private static Timer? _timer;
|
|
|
+
|
|
|
+ private static List<string> _messages = new List<string>();
|
|
|
+
|
|
|
+ private static int _hourSeconds;
|
|
|
+ private static int _hourExams;
|
|
|
+ private static int _fourHourExams;
|
|
|
+ private static int _totalExams;
|
|
|
+
|
|
|
+ private static DateTime _startTime;
|
|
|
+
|
|
|
+ public static void Initialize()
|
|
|
+ {
|
|
|
+ _timer = new Timer(TimerCallback);
|
|
|
+ _timer.Change(0, 1000);
|
|
|
+ _startTime = DateTime.Now;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void TimerCallback(object? stateInfo)
|
|
|
+ {
|
|
|
+ _hourSeconds++;
|
|
|
+ if(_hourSeconds >= 3600)
|
|
|
+ {
|
|
|
+ var sts = _startTime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
+ var ets = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ _hourSeconds = 0;
|
|
|
+ _hourExams = 0;
|
|
|
+ _startTime = DateTime.Now;
|
|
|
+
|
|
|
+ var hourStr = $"[{sts}-{ets}] {_hourExams} exams processed.";
|
|
|
+ Logger.WriteLine(hourStr);
|
|
|
+
|
|
|
+ //One hour
|
|
|
+ _messages.Add(hourStr);
|
|
|
+
|
|
|
+ if(_messages.Count >= 4)
|
|
|
+ {
|
|
|
+ _messages.Add($"{_fourHourExams} exams processed in 4 hours.");
|
|
|
+ _messages.Add($"{_totalExams} exams processed.");
|
|
|
+ var sendMessage = string.Join(Environment.NewLine, _messages);
|
|
|
+ Task.Run(async()=>
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ await DingTalk.SendMessageAsync(sendMessage);
|
|
|
+ }
|
|
|
+ catch (Exception dx)
|
|
|
+ {
|
|
|
+ Logger.WriteLine($"Send dingtalk message error:{dx.Message}");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ _fourHourExams = 0;
|
|
|
+ _messages.Clear();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void IncreaseExamCount()
|
|
|
+ {
|
|
|
+ _hourExams++;
|
|
|
+ _fourHourExams++;
|
|
|
+ _totalExams++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|