diff --git a/Modbus.Net/src/Base.Common/TaskManager.cs b/Modbus.Net/src/Base.Common/TaskManager.cs
index 0e876b1..b1d5d6c 100644
--- a/Modbus.Net/src/Base.Common/TaskManager.cs
+++ b/Modbus.Net/src/Base.Common/TaskManager.cs
@@ -354,7 +354,7 @@ namespace Modbus.Net
{
if (Machine.IsConnected)
{
- var ans = await task.Invoke(Machine, _tasks, task.Params);
+ var ans = await task.Invoke(Machine, _tasks, task.Params, task.TimeoutTime);
task.Return?.Invoke(ans);
return true;
}
@@ -411,13 +411,15 @@ namespace Modbus.Net
/// 返回值的键类型
/// 循环间隔(毫秒)
/// 设备离线时的循环间隔(毫秒)
- public TaskItemGetData(Action returnFunc, MachineGetDataType getDataType, int getCycle, int sleepCycle)
+ /// 任务的超时时间
+ public TaskItemGetData(Action returnFunc, MachineGetDataType getDataType, int getCycle, int sleepCycle, int timeout = 100000)
{
Name = "GetDatas";
- Invoke = async (machine, tasks, parameters) =>
+ TimeoutTime = timeout;
+ Invoke = async (machine, tasks, parameters, timeoutTime) =>
{
var cts = new CancellationTokenSource();
- cts.CancelAfter(TimeSpan.FromSeconds(100000));
+ cts.CancelAfter(TimeSpan.FromMilliseconds(timeoutTime));
var ans =
await tasks.StartNew(
async () => await machine.InvokeMachineMethod写入的值
/// 写入值的键类型
/// 返回值的处理函数
- public TaskItemSetData(Dictionary values, MachineSetDataType setDataType, Action returnFunc = null)
+ /// 任务的超时时间
+ public TaskItemSetData(Dictionary values, MachineSetDataType setDataType, Action returnFunc = null, int timeout = 100000)
{
Name = "SetDatas";
- Invoke = Invoke = async (machine, tasks, parameters) =>
+ TimeoutTime = timeout;
+ Invoke = Invoke = async (machine, tasks, parameters, timeoutTime) =>
{
var cts = new CancellationTokenSource();
- cts.CancelAfter(TimeSpan.FromSeconds(100000));
+ cts.CancelAfter(TimeSpan.FromMilliseconds(timeoutTime));
var ans =
await tasks.StartNew(
async () => await machine.InvokeMachineMethod
public int TimerTime { get; set; }
+ ///
+ /// 超时时间
+ ///
+ public int TimeoutTime { get; set; } = 100000;
+
///
/// 离线定时器
///
@@ -495,7 +504,7 @@ namespace Modbus.Net
///
/// 执行的任务
///
- public Func> Invoke { get; set; }
+ public Func> Invoke { get; set; }
///
/// 检测设备的在线状态
@@ -566,7 +575,7 @@ namespace Modbus.Net
Timer = new Timer(async state =>
{
if (!DetectConnected()) TimerChangeToDisconnect();
- var ans = await Invoke(GetMachine(), GetTaskFactory(), Params);
+ var ans = await Invoke(GetMachine(), GetTaskFactory(), Params, TimeoutTime);
Return?.Invoke(ans);
}, null, 0, TimerTime);
}