Создание класса с уникальным именем объекта в методе обработчика событий (во время выполнения) - PullRequest
1 голос
/ 12 августа 2011

Я много раз искал решение, но не смог найти. У меня есть серверное приложение (в .NET), которое получает видеопотоки от нескольких устройств. Библиотека, которую я использую для декодирования и обработки потока, не является поточно-ориентированной. Моя библиотека называется VideoProcessor с классом VideoProcessor.

В моей основной программе я хотел бы создать экземпляр VideoProcessor для каждого устройства. Мой первый подход состоял в том, чтобы иметь обработчик событий соединения, который создает экземпляр VideoProcessor для нового устройства. Тем не менее, он никогда не будет работать, когда более одного устройства пытается подключиться. Пожалуйста, обратитесь к фрагменту кода ниже:

 static void HandleVideoConnectionEvent(int port, string deviceId)
 {
        VideoProcessor vid = new VideoProcessor(port, deviceId);

  }

Как видите, я буду перезаписывать vid при каждом подключении нового устройства. У меня кончились идеи. Мне нужно иметь отдельный экземпляр VideoProcessor, работающий для каждого устройства, и я должен отслеживать, какой экземпляр используется для какого устройства. Моя последняя надежда - создать новый процесс для соединения с новым устройством и вести список идентификаторов устройств и соответствующих им PID (я не знаю, возможно ли это в .NET). Пожалуйста помоги. Там должен быть аккуратный способ сделать это. Заранее большое спасибо за ваше время.

С уважением.

1 Ответ

0 голосов
/ 12 августа 2011

Используйте Словарь класса :

 static Dictionary<string, VideoProcessor> processors = 
         new Dictionary<string, VideoProcessor();

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

Затем вы можете искать класс VideoConnection по идентификатору устройства.Например:

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

Конечно, вам необходимо выполнить проверку работоспособности, например, убедиться, что в словаре еще не указан идентификатор устройства (словарь должен иметь уникальные ключи или уникальные идентификаторы устройств,и убедившись, что при попытке получить его из словаря, идентификатор устройства действительно существует)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...