Я размышляю над некоторыми идеями по созданию DLL для некоторых общих вещей, которые я делаю. Одна вещь, которую я хотел бы проверить, если это возможно, это запустить поток внутри DLL. Я уверен, что смог бы, по крайней мере, запустить его, и он автоматически освободится при завершении (и заставит его принудительно завершить себя) - что, как я вижу, не будет большой проблемой. Но как только я запускаю его, я не вижу, как я могу продолжать общаться с ним (особенно, чтобы остановить его), главным образом потому, что каждый вызов DLL уникален (насколько мне известно), но я также очень мало знаю о предмет.
Я видел, как в некоторых случаях DLL может быть загружена в начале и выпущена в конце, когда она больше не нужна. У меня 0 знаний или опыта работы с этим методом, кроме простого наблюдения за чем-то связанным с ним, я даже не могу сказать вам, что или как, я не помню. Но возможно ли это вообще?
Я знаю об ActiveX / COM, но это не то, что я хочу - я хотел бы просто базовую DLL, которую можно использовать в разных языках (особенно в C #).
Кроме того, если это возможно, то как бы мне выполнить обратные вызовы из DLL в приложение? Например, когда я запускаю поток, я, скорее всего, назначу функцию (которая находится внутри EXE-файла) в качестве обработчика для событий (которые запускаются из DLL).
Итак, я думаю, что я спрашиваю - как загрузить DLL для непрерывной работы и освободить ее, когда я закончу - в отличие от простого метода вызова отдельных функций в DLL по мере необходимости. В том же случае - я мог бы назначать переменные или создавать объекты внутри DLL. Как я могу убедиться, что после того, как я назначу эту переменную (или создаю объект), как я могу убедиться, что переменная или объект все еще будут доступны при следующем вызове DLL? Очевидно, что для этого потребуется механизм инициализации / финализации DLL (т. Е. Создание объектов внутри DLL при загрузке DLL и освобождение объектов при выгрузке DLL).
РЕДАКТИРОВАТЬ: В конце я оберну DLL внутри компонента, поэтому при создании экземпляра компонента будет загружена DLL, и внутри DLL будет создан соответствующий поток, затем, когда компонент свободен, DLL выгружается. Также необходимо убедиться, что если есть, например, 2 из этих компонентов, то для каждого компонента будет загружено 2 экземпляра DLL.
Это как-то связано с использованием II интерфейса? Потому что у меня тоже 0 опыта с этим.
Не нужно прямо отвечать на него примерами исходного кода - ссылка на хороший учебник была бы полезна.