1+ using System ;
2+ using System . Globalization ;
3+ using System . Timers ;
4+
5+ namespace IMYSHook ;
6+
7+ public class Tasker
8+ {
9+ private static Timer _apTimer = new ( ) ;
10+ private static Timer _bpTimer = new ( ) ;
11+ private static Timer _expeditionTimer = new ( ) ;
12+
13+ private static Timer GetTimer ( int eventType )
14+ {
15+ switch ( eventType )
16+ {
17+ case 1 :
18+ return _apTimer ;
19+ case 2 :
20+ return _bpTimer ;
21+ case 3 :
22+ return _expeditionTimer ;
23+ }
24+ return null ;
25+ }
26+
27+ public static void Set ( int eventType , string scheduleAt )
28+ {
29+ var timer = GetTimer ( eventType ) ;
30+
31+ if ( timer == null ) return ;
32+
33+ if ( timer . Enabled ) timer . Stop ( ) ;
34+
35+ var interval = GetInterval ( scheduleAt ) ;
36+
37+ if ( interval <= 0 ) return ;
38+
39+ timer = new Timer ( interval * 1000 ) ;
40+ timer . Elapsed += ( sender , e ) => EventNotification ( sender , e , eventType ) ;
41+ timer . AutoReset = false ;
42+ timer . Enabled = true ;
43+ }
44+
45+ private static int GetInterval ( string scheduleTime )
46+ {
47+ if ( scheduleTime == "" ) return 0 ;
48+
49+ var result = DateTime . ParseExact ( scheduleTime , "yyyy-MM-dd HH:mm:ss" , CultureInfo . InvariantCulture ) ;
50+ result = result . AddHours ( - 1 ) ;
51+
52+ var now = DateTime . Now ;
53+
54+ var interval = ( int ) ( result - now ) . TotalSeconds ;
55+
56+ return interval ;
57+ }
58+
59+ private static void EventNotification ( object source , ElapsedEventArgs e , int eventType )
60+ {
61+ switch ( eventType )
62+ {
63+ case 1 :
64+ Notification . Popup ( "回復提示" , "AP已回復完成!" ) ;
65+ break ;
66+ case 2 :
67+ Notification . Popup ( "回復提示" , "BP已回復完成!" ) ;
68+ break ;
69+ case 3 :
70+ Notification . Popup ( "遠征提示" , "遠征完成!" ) ;
71+ break ;
72+ }
73+ }
74+ }
0 commit comments