【发布时间】:2011-01-28 21:36:31
【问题描述】:
我们有一个串行端口,它通过同一条线路连接到数百个物理设备。我们有 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 中有没有更好的方法来处理这个问题?
【问题讨论】:
-
ReleasePort 方法有什么作用?
-
@ReleasePort 关闭底层端口,然后串口对象不再可用
-
有了所有滥用单例的方法,这是一个很好的地方。第一次访问会打开它,并在应用程序关闭时关闭。
标签: c# .net vb.net design-patterns oop