mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-09 00:34:14 +08:00
add lock for independent task
This commit is contained in:
@@ -42,8 +42,6 @@ public class AutoDomainTask
|
||||
|
||||
private readonly AutoDomainConfig _config;
|
||||
|
||||
private bool IsRunning { get; set; }
|
||||
|
||||
public AutoDomainTask(AutoDomainParam taskParam)
|
||||
{
|
||||
_taskParam = taskParam;
|
||||
@@ -54,13 +52,20 @@ public class AutoDomainTask
|
||||
_clickOffset = new ClickOffset(captureArea.X, captureArea.Y, assetScale);
|
||||
_combatCommands = CombatScriptParser.Parse(_taskParam.CombatStrategyContent);
|
||||
_config = TaskContext.Instance().Config.AutoDomainConfig;
|
||||
IsRunning = false;
|
||||
}
|
||||
|
||||
public async void Start()
|
||||
{
|
||||
var hasLock = false;
|
||||
try
|
||||
{
|
||||
Monitor.TryEnter(TaskContext.TaskLocker, ref hasLock);
|
||||
if (!hasLock)
|
||||
{
|
||||
Logger.LogError("启动自动秘境功能失败:当前存在正在运行中的独立任务,请不要重复执行任务!");
|
||||
return;
|
||||
}
|
||||
|
||||
Init();
|
||||
var combatScenes = new CombatScenes().InitializeTeam(GetContentFromDispatcher());
|
||||
|
||||
@@ -125,13 +130,16 @@ public class AutoDomainTask
|
||||
TaskTriggerDispatcher.Instance().SetCacheCaptureMode(DispatcherCaptureModeEnum.OnlyTrigger);
|
||||
TaskSettingsPageViewModel.SetSwitchAutoDomainButtonText(false);
|
||||
Logger.LogInformation("→ {Text}", "自动秘境结束");
|
||||
IsRunning = false;
|
||||
|
||||
if (hasLock)
|
||||
{
|
||||
Monitor.Exit(TaskContext.TaskLocker);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Init()
|
||||
{
|
||||
IsRunning = true;
|
||||
LogScreenResolution();
|
||||
if (_taskParam.DomainRoundNum == 9999)
|
||||
{
|
||||
@@ -374,7 +382,6 @@ public class AutoDomainTask
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 旋转视角后寻找石化古树
|
||||
/// </summary>
|
||||
@@ -665,10 +672,8 @@ public class AutoDomainTask
|
||||
Sleep(800, _taskParam.Cts);
|
||||
}
|
||||
|
||||
|
||||
Sleep(1000, _taskParam.Cts);
|
||||
|
||||
|
||||
var captureArea = TaskContext.Instance().SystemInfo.CaptureAreaRect;
|
||||
for (var i = 0; i < 30; i++)
|
||||
{
|
||||
@@ -757,4 +762,4 @@ public class AutoDomainTask
|
||||
Logger.LogInformation("剩余:浓缩树脂 {CondensedResinCount} 脆弱树脂 {FragileResinCount}", condensedResinCount, fragileResinCount);
|
||||
return (condensedResinCount, fragileResinCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user