问题描述
我使用库NModbus4并创建RTU连接。
public static IModbusSerialMaster Master { get; set; }
Master = ModbusSerialMaster.CreateRtu(SerialPort);
我有方法GetClient()
返回了Master
和方法Registers()
如下:
public static ushort[] Registers(Func<IModbusSerialMaster,ushort[]> action)
{
ushort[] registers = new ushort[0];
var client = GetClient();
if (client == null)
return registers;
//mutex.WaitOne();
try
{
registers = action.Invoke(client);
}
catch (Exception e)
{
log.Error("error");
}
finally
{
//mutex.ReleaseMutex();
}
return registers;
}
我试图使用System.Threading.Mutex
来确保一次仅发送一种帧。但是当In循环运行2/3任务大约一分钟后,它将锁定mutex.WaitOne();
并停止程序。
如果我不使用互斥锁。我没有看到任何错误。 NModbus本身是否确保程序不会以这种方式崩溃?还是我应该找出原因,留下一个互斥体并修复错误?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)