Skip to content

Commit 403c27f

Browse files
committed
fix stop task
1 parent bdc1283 commit 403c27f

File tree

8 files changed

+25
-35
lines changed

8 files changed

+25
-35
lines changed

TbsCore/Core/TaskExecutor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public static async Task PageLoaded(Account acc)
2525
if (IsCaptcha(acc) || IsWWMsg(acc) || IsBanMsg(acc) || IsMaintanance(acc)) //Check if a captcha/ban/end of server/maintanance
2626
{
2727
acc.Logger.Warning("Captcha/WW/Ban/Maintanance found! Stopping bot for this account!");
28-
acc.TaskTimer.ForceTimerStop();
28+
acc.TaskTimer.Stop();
2929
}
3030
if (CheckCookies(acc))
3131
await DriverHelper.ExecuteScript(acc, "document.getElementById('CybotCookiebotDialogBodyLevelButtonLevelOptinDeclineAll').click();");
@@ -92,7 +92,7 @@ public static async Task Execute(Account acc, BotTask task)
9292
var result = await acc.Wb.Init(acc);
9393
if (!result)
9494
{
95-
acc.TaskTimer.ForceTimerStop();
95+
acc.TaskTimer.Stop();
9696
return;
9797
}
9898
}

TbsCore/Core/TaskTimer.cs

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,6 @@ public sealed class TaskTimer : IDisposable
1414
private readonly Random _random;
1515
private readonly Account _acc;
1616
private readonly Timer _mainTimer;
17-
private bool flagStopTimer;
18-
19-
public void ForceTimerStop()
20-
{
21-
_acc.Status = Status.Stopping;
22-
flagStopTimer = true;
23-
}
2417

2518
private long _isTaskExcuting;
2619

@@ -63,21 +56,25 @@ public void Start()
6356
if (IsBotRunning) return;
6457
IsBotRunning = true;
6558
IsTaskExcuting = false;
66-
flagStopTimer = false;
6759
_mainTimer.Start();
6860
}
6961

70-
public async Task Stop(bool force = false)
62+
public void Stop()
7163
{
7264
if (!IsBotRunning) return;
7365

7466
IsBotRunning = false;
7567
_mainTimer.Stop();
7668

77-
if (!force)
78-
{
79-
await Task.Run(() => { while (IsTaskExcuting) { } });
80-
}
69+
var currentTask = _acc.Tasks.CurrentTask;
70+
if (currentTask != null) currentTask.StopFlag = true;
71+
_acc.Status = Status.Pausing;
72+
}
73+
74+
public async Task WaitStop()
75+
{
76+
await Task.Run(() => { while (IsTaskExcuting) { } });
77+
_acc.Status = Status.Paused;
8178
}
8279

8380
private void MainTimerElapsed(object source, ElapsedEventArgs e) => NewTick();
@@ -86,12 +83,6 @@ private async void NewTick()
8683
{
8784
if (!IsBotRunning) return;
8885
if (IsTaskExcuting) return;
89-
if (flagStopTimer)
90-
{
91-
await Stop(true);
92-
_acc.Status = Status.Offline;
93-
return;
94-
}
9586
IsTaskExcuting = true;
9687

9788
if (_acc.Tasks.Count == 0)

TbsCore/Extensions/AccountExtension.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,5 @@ public static bool CanLogout(this Account acc)
2020
if (acc.Status == Status.Online) return true;
2121
return false;
2222
}
23-
24-
public static async Task Stop(this Account acc)
25-
{
26-
if (acc.Status == Status.Offline) return;
27-
acc.Status = Status.Stopping;
28-
await acc.TaskTimer.Stop();
29-
acc.Status = Status.Offline;
30-
}
3123
}
3224
}

TbsCore/Helpers/IoHelperCore.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,11 @@ public static async Task<bool> Login(Account acc)
190190
/// <param name="acc"></param>
191191
public static async Task Logout(Account acc)
192192
{
193-
await acc.TaskTimer.Stop();
193+
acc.TaskTimer.Stop();
194+
await acc.TaskTimer.WaitStop();
195+
acc.Status = Status.Stopping;
194196
acc.Wb.Close();
197+
acc.Status = Status.Offline;
195198
}
196199
}
197200
}

TbsCore/Models/AccModels/TaskList.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,11 @@ public BotTask FirstTask
152152
get => _tasks.FirstOrDefault();
153153
}
154154

155+
public BotTask CurrentTask
156+
{
157+
get => _tasks.FirstOrDefault(x => x.Stage == TaskStage.Executing);
158+
}
159+
155160
public void Save()
156161
{
157162
var list = new List<TaskFileModel>();

TbsCore/Tasks/LowLevel/LoginTask.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public override async Task<TaskRes> Execute(Account acc)
3535
{
3636
// Wrong password/nickname
3737
acc.Logger.Warning("Password is incorrect!");
38-
acc.TaskTimer.ForceTimerStop();
38+
acc.TaskTimer.Stop();
3939
}
4040
else
4141
{

TbsCore/Tasks/LowLevel/ReopenDriver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public override async Task<TaskRes> Execute(Account acc)
5050
var result = await acc.Wb.Init(acc, ChangeAccess);
5151
if (!result)
5252
{
53-
acc.TaskTimer.ForceTimerStop();
53+
acc.TaskTimer.Stop();
5454
}
5555

5656
return TaskRes.Executed;

TravBotSharp/Views/GeneralUc.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,9 @@ private void button6_Click(object sender, EventArgs e) // Stop timers
234234
}
235235
var thread = new Thread(async () =>
236236
{
237-
acc.Status = Status.Pausing;
237+
acc.TaskTimer.Stop();
238238
UpdateBotRunning();
239-
await acc.TaskTimer.Stop();
240-
acc.Status = Status.Paused;
239+
await acc.TaskTimer.WaitStop();
241240
UpdateBotRunning();
242241
});
243242
thread.Start();

0 commit comments

Comments
 (0)