我应该对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 (将#修改为@)