在事件处理程序方法中(在运行时)具有唯一对象名称的类实例化



我已经搜索了很多解决方案,但没有找到任何。我有一个服务器应用程序(在。net中)接收来自多个设备的视频流。我用来解码和处理流的库不是线程安全的。我的库的名字是"VideoProcessor"和一个VideoProcessor类。

在我的主程序中,我想为每个设备创建一个VideoProcessor实例。我的第一种方法是使用一个连接事件处理程序,它为新设备实例化VideoProcessor。然而,当多个设备试图连接时,它将永远无法工作。请参考下面的代码片段:
 static void HandleVideoConnectionEvent(int port, string deviceId)
 {
        VideoProcessor vid = new VideoProcessor(port, deviceId);
  }

如您所见,每次新设备连接时,我都会覆盖vid。我已经没有主意了。我需要为每个设备运行一个单独的VideoProcessor实例,并且我必须跟踪哪个实例用于哪个设备。我最后的希望是为新设备连接生成一个新进程,并维护一个deviceid列表及其相应的PID(我不知道这在。net中是否可能)。请帮助。一定有一个简洁的方法来做这件事。非常感谢您的宝贵时间。

问候。

使用Dictionary类:

 static Dictionary<string, VideoProcessor> processors = 
         new Dictionary<string, VideoProcessor();
 static void HandleVideoConnectionEvent(int port, string deviceId)
 {
    processors.Add(deviceId, new VideoProcessor(port, deviceId));
 }

然后您可以通过deviceId查找VideoConnection类。如:

 static VideoProcessor GetVideoProcessor(string deviceId)
 {
     return processors[deviceId];
 }

当然,您需要进行完整性检查,例如确保deviceId不存在于字典中(字典必须具有唯一的键,或唯一的deviceId,并确保当您尝试从字典中获取它时,deviceId实际上存在)

最新更新