如何解决我应该对Mutex的Nmodbus4 RTU连接进行排队吗?
我使用库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 举报,一经查实,本站将立刻删除。