У меня есть класс библиотеки, используемый в ASP.Net и не-веб-приложениях, которые нуждаются в окончательной доработке приложения.В C#, как класс может выполнить свою собственную завершение конца приложения таким образом, который работает как в ASP.Net, так и в не-веб-приложениях?
В библиотеке моего проекта я хочу, чтобы класс выполнял свою завершающую завершающую процедуру, не требуя от разработчика добавления вызова Global.Application_End или AppDomain.CurrentDomain.ProcessExit.
Как это можно сделать?
Дополнительный фон/обоснование:
Даже если бы я был рассмотреть эти варианты, по-видимому, что AppDomain.CurrentDomain.ProcessExit не дозвонились, когда приложение ASP .Net останавливается в IIS. И Global.Application_End специфичен для ASP .Net. Таким образом, ни один из вариантов не совместим с обеими ситуациями.
Если это помогает иметь конкретный пример того, почему это может понадобиться ... В этом конкретном случае он использует SqlDependency, который (как я понимаю) требует вызова SqlDependency.Start для инициализации и вызова SqlDependency .Stop до завершения приложения.
(см http://msdn.microsoft.com/en-us/library/ms172133.aspx)
В библиотеке классов, что это общий? –
Вы не можете защищаться от любых непредвиденных обстоятельств - в конце дня кто-то может перейти к машине и вытащить ее вилку из стены - если потребитель библиотеки * укажет, когда они закончили использовать библиотеку (в либо Application_End, либо там, где это имеет смысл для не-веб-приложения) будет более чистым общим решением, чем попытка «волшебным образом» обнаружить сценарии выключения. –
Да, это общая библиотека. – BrianCooksey