Fix a bug that will cause stop task crash.
This commit is contained in:
@@ -245,9 +245,13 @@ namespace Modbus.Net
|
|||||||
task.GetMachine = () => Machine;
|
task.GetMachine = () => Machine;
|
||||||
task.GetTaskFactory = () => _tasks;
|
task.GetTaskFactory = () => _tasks;
|
||||||
|
|
||||||
|
|
||||||
if (!TasksWithTimer.Exists(taskCon => taskCon.Name == task.Name))
|
if (!TasksWithTimer.Exists(taskCon => taskCon.Name == task.Name))
|
||||||
{
|
{
|
||||||
TasksWithTimer.Add(task);
|
lock (TasksWithTimer)
|
||||||
|
{
|
||||||
|
TasksWithTimer.Add(task);
|
||||||
|
}
|
||||||
task.StartTimer();
|
task.StartTimer();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -265,7 +269,10 @@ namespace Modbus.Net
|
|||||||
{
|
{
|
||||||
var task = TasksWithTimer.FirstOrDefault(taskCon => taskCon.Name == taskItemName);
|
var task = TasksWithTimer.FirstOrDefault(taskCon => taskCon.Name == taskItemName);
|
||||||
task?.StopTimer();
|
task?.StopTimer();
|
||||||
TasksWithTimer.Remove(task);
|
lock (TasksWithTimer)
|
||||||
|
{
|
||||||
|
TasksWithTimer.Remove(task);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -278,8 +285,13 @@ namespace Modbus.Net
|
|||||||
public bool StopAllTimers()
|
public bool StopAllTimers()
|
||||||
{
|
{
|
||||||
var ans = true;
|
var ans = true;
|
||||||
foreach (var task in TasksWithTimer)
|
lock (TasksWithTimer)
|
||||||
ans = ans && StopTimer(task.Name);
|
{
|
||||||
|
for (int i = 0; i < TasksWithTimer.Count; i++)
|
||||||
|
{
|
||||||
|
ans = ans && StopTimer(TasksWithTimer[0].Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -306,8 +318,13 @@ namespace Modbus.Net
|
|||||||
public bool PauseAllTimers()
|
public bool PauseAllTimers()
|
||||||
{
|
{
|
||||||
var ans = true;
|
var ans = true;
|
||||||
foreach (var task in TasksWithTimer)
|
lock (TasksWithTimer)
|
||||||
ans = ans && PauseTimer(task.Name);
|
{
|
||||||
|
for (int i = 0; i < TasksWithTimer.Count; i++)
|
||||||
|
{
|
||||||
|
ans = ans && PauseTimer(TasksWithTimer[i].Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -334,8 +351,11 @@ namespace Modbus.Net
|
|||||||
public bool ContinueAllTimers()
|
public bool ContinueAllTimers()
|
||||||
{
|
{
|
||||||
var ans = true;
|
var ans = true;
|
||||||
foreach (var task in TasksWithTimer)
|
lock (TasksWithTimer)
|
||||||
ans = ans && ContinueTimer(task.Name);
|
{
|
||||||
|
foreach (var task in TasksWithTimer)
|
||||||
|
ans = ans && ContinueTimer(task.Name);
|
||||||
|
}
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user