@@ -42,8 +42,6 @@ public class AutoDomainTask
42
42
43
43
private readonly AutoDomainConfig _config ;
44
44
45
- private bool IsRunning { get ; set ; }
46
-
47
45
public AutoDomainTask ( AutoDomainParam taskParam )
48
46
{
49
47
_taskParam = taskParam ;
@@ -54,13 +52,20 @@ public AutoDomainTask(AutoDomainParam taskParam)
54
52
_clickOffset = new ClickOffset ( captureArea . X , captureArea . Y , assetScale ) ;
55
53
_combatCommands = CombatScriptParser . Parse ( _taskParam . CombatStrategyContent ) ;
56
54
_config = TaskContext . Instance ( ) . Config . AutoDomainConfig ;
57
- IsRunning = false ;
58
55
}
59
56
60
57
public async void Start ( )
61
58
{
59
+ var hasLock = false ;
62
60
try
63
61
{
62
+ Monitor . TryEnter ( TaskContext . TaskLocker , ref hasLock ) ;
63
+ if ( ! hasLock )
64
+ {
65
+ Logger . LogError ( "启动自动秘境功能失败:当前存在正在运行中的独立任务,请不要重复执行任务!" ) ;
66
+ return ;
67
+ }
68
+
64
69
Init ( ) ;
65
70
var combatScenes = new CombatScenes ( ) . InitializeTeam ( GetContentFromDispatcher ( ) ) ;
66
71
@@ -125,13 +130,16 @@ public async void Start()
125
130
TaskTriggerDispatcher . Instance ( ) . SetCacheCaptureMode ( DispatcherCaptureModeEnum . OnlyTrigger ) ;
126
131
TaskSettingsPageViewModel . SetSwitchAutoDomainButtonText ( false ) ;
127
132
Logger . LogInformation ( "→ {Text}" , "自动秘境结束" ) ;
128
- IsRunning = false ;
133
+
134
+ if ( hasLock )
135
+ {
136
+ Monitor . Exit ( TaskContext . TaskLocker ) ;
137
+ }
129
138
}
130
139
}
131
140
132
141
private void Init ( )
133
142
{
134
- IsRunning = true ;
135
143
LogScreenResolution ( ) ;
136
144
if ( _taskParam . DomainRoundNum == 9999 )
137
145
{
@@ -374,7 +382,6 @@ private bool IsDomainEnd()
374
382
return false ;
375
383
}
376
384
377
-
378
385
/// <summary>
379
386
/// 旋转视角后寻找石化古树
380
387
/// </summary>
@@ -665,10 +672,8 @@ private bool GettingTreasure(bool recognizeResin, bool isLastTurn)
665
672
Sleep ( 800 , _taskParam . Cts ) ;
666
673
}
667
674
668
-
669
675
Sleep ( 1000 , _taskParam . Cts ) ;
670
676
671
-
672
677
var captureArea = TaskContext . Instance ( ) . SystemInfo . CaptureAreaRect ;
673
678
for ( var i = 0 ; i < 30 ; i ++ )
674
679
{
@@ -757,4 +762,4 @@ private bool GettingTreasure(bool recognizeResin, bool isLastTurn)
757
762
Logger . LogInformation ( "剩余:浓缩树脂 {CondensedResinCount} 脆弱树脂 {FragileResinCount}" , condensedResinCount , fragileResinCount ) ;
758
763
return ( condensedResinCount , fragileResinCount ) ;
759
764
}
760
- }
765
+ }
0 commit comments