У нас есть последовательный порт, который подключен к сотням физических устройств по одному проводу. У нас есть протоколы, такие как Modbus и Hart для обработки запросов и ответов между приложением и устройствами. Вопрос связан с управлением счетчиком ссылок канала. Когда ни одно устройство не использует канал, канал должен быть закрыт.
public class SerialPortChannel
{
int refCount = 0;
public void AddReference()
{
refCount++;
}
public void ReleaseReference()
{
refCount--;
if (refCount <= 0)
this.ReleasePort(); //This close the serial port
}
}
Для каждого подключенного устройства мы создаем объект для устройства, например
device = new Device();
device.Attach(channel); //this calls channel.AddReference()
При отключении устройства
device.Detach(channel); //this calls channel.ReleaseReference()
Меня не убеждает модель подсчета ссылок. Есть ли лучший способ справиться с этой проблемой в .NET World?