Я пишу приложение на основе COM-объекта от третьей стороны (без источника), включенное в ссылки на мои приложения. COM-объект создает зеркало определенных учетных данных, чтобы их можно было прочитать в другом формате (собственный формат-> MSSQL). Приложение является оберткой для COM-объекта, позволяющей взаимодействовать внутри; Сам COM-объект регулярно проверяет собственные файлы, чтобы узнать, были ли они обновлены, а затем копирует их, если они есть.
У нас много клиентов, у каждого из которых есть свой аккаунт для проприетарного формата. Мы находимся в процессе конвертации из предыдущего приложения, и как только это будет сделано, у нас будет ~ 50 клиентов, работающих таким образом. У меня уже есть приложение, которое работает только для одного клиента, и я не думаю, что было бы целесообразно иметь постоянно работающие 50 копий приложения, особенно когда кажется, что COM имеет медленную утечку памяти (argh). Таким образом, программа, которую я пытаюсь написать, будет принимать различных клиентов, сгруппированных тем или иным способом, и запускать COM для каждого в фоновом режиме, тогда как передний план обеспечивает дополнительное взаимодействие и, при необходимости, перезапуск COM-объекта.
Сначала я попытался использовать Threads / BackgroundWorker, и это, похоже, работало нормально, но после некоторой путаницы выясняется, что, несмотря на объявление COM-объекта New в каждом классе, созданном для клиента, все клиенты совместно используют один и тот же Экземпляр COM, так что только последний загруженный клиент будет когда-либо делать.
Хотя вполне может быть, что я просто делаю это неправильно (если можно, скажите, пожалуйста! Я опубликую свой код, если это будет полезно), мне кажется, мне нужен способ загрузки отдельный экземпляр .DLL для каждого клиента в программе; к сожалению, это более высокий уровень, чем там, где я нахожусь. Я читал «Области применения и рефлексию», но из того, что я смог выяснить, не похоже, что я могу легко вызывать методы и не могу использовать события (на которые я полагаюсь для обновления информации). в приложении.)
tl; dr: Каков наилучший способ загрузки отдельных экземпляров DLL, чтобы я мог манипулировать информацией и прослушивать события из COM-объекта?