-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathIdleTimeControl.cs
More file actions
47 lines (44 loc) · 1.31 KB
/
IdleTimeControl.cs
File metadata and controls
47 lines (44 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace AssistAnt
{
public class IdleTimeControl
{
public Action EventIdle;
private Thread Waiter;
private DateTime LastActive;
private int CountActive;
private int EventAfterMaxMinute = 5;
private int EventAfterMaxCount = 20;
internal void Start()
{
if (Waiter != null) return;
Waiter = new Thread(() =>
{
while (true)
{
Thread.Sleep(5_000);
if (LastActive != DateTime.MinValue
&& ( (DateTime.UtcNow - LastActive).TotalSeconds > EventAfterMaxMinute * 60
|| (DateTime.UtcNow - LastActive).TotalSeconds > 30 && CountActive >= EventAfterMaxCount)
&& EventIdle != null)
{
EventIdle();
}
}
});
Waiter.IsBackground = true;
LastActive = DateTime.MinValue;
Waiter.Start();
}
internal void Process()
{
LastActive = DateTime.UtcNow;
CountActive++;
}
}
}