Как написать библиотеку в C #, библиотека может быть запущена без какого-либо вызова? - PullRequest
0 голосов
/ 17 июля 2009

Я хочу написать C # lib или справочную службу, так что если приложение ссылается на мою библиотеку, и когда приложение запускается, функция в моей функции может быть запущена без какого-либо вызова?

например, я получил библиотеку, продолжаю читать использование памяти платформы, когда память была до 80%, я выскакиваю сообщение пользователю, пришло время закрыть приложение.

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

так ... как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 17 июля 2009

Создайте статический конструктор для вашего класса - этот конструктор будет запускаться один раз и только один раз, когда приложение хоста ссылается на что-либо, связанное с вашим классом.

Вы можете создать поток для запуска некоторого процесса проверки фона, подключения к событию объекта Application или чего угодно.

Обратите внимание, что вам нужно сделать больше, чем просто добавить ссылку на проект в свою сборку - сборка загружается в домен приложения только тогда, когда что-то в этой сборке ссылается на существующий код .

0 голосов
/ 17 июля 2009

Можно создать традиционный экспорт DLL в сборке (через ILASM или уже не существующий Delphi.NET), но это не очень рекомендуется. (поиск обратного p / invoke)

Другой подход заключается в создании промежуточной библиотеки C ++ / CLI для вызова управляемого кода. Но, если честно, я считаю, что вам просто лучше создать собственную DLL с C ++ или Delphi.

Edit:

Хорошо, сначала отказ от ответственности, я работаю в Quest Software (компании, которая делает этот инструмент, который я собираюсь подключить). Тем не менее ...

Мониторинг ОС на самом деле не так прост, как вы могли бы подумать, такие вещи, как потребление памяти, мониторинг процессов и т. Д. - это, конечно, странно. Вы можете обнаружить, что что-то вроде Spotlight на Windows (бесплатное программное обеспечение для первых 10 лицензий) подойдет вашей цели?

0 голосов
/ 17 июля 2009

Термин, который вы ищете, - это «ловушка приложения Win32». Здесь есть хорошее введение в управляемую инъекцию крюка: http://msdn.microsoft.com/en-us/magazine/cc188966.aspx

Я не уверен, что вы можете контролировать потребление системной памяти с помощью хука приложений. И, к сожалению, вы не можете написать глобальный хук в управляемом коде, потому что глобальные хуки требуют четко определенной точки входа (экспорт DLL). Это действительно то, что лучше всего подходит для C ++.

...