Czy ktoś wie, jak pozbyć się AddIns utworzone przy użyciu System.AddIn. Wszystkie przykłady online pokazują, jak z łatwością załadować i używać dodatek, ale żaden nie pokazuje, jak je pozbyć, gdy tylko przeżyją. Moim problemem jest tworzenie dodatków w nowych procesach, a te procesy nigdy nie zbierają śmieci, oczywiście problem.Pozbyć się AddIns utworzone przy użyciu MAF (System.AddIn)
Poniżej znajduje się przykład kodu ilustrujący mój problem. Załóżmy, że użytkownik nigdy nie opuszcza tej aplikacji, ale tworzy wiele instancji ICalculatora. W jaki sposób te procesy addIn są kiedykolwiek usuwane?
static void Main(string[] args)
{
string addInRoot = GetExecutingDirectory();
// Update the cache files of the pipeline segments and add-ins
string[] warnings = AddInStore.Update(addInRoot);
// search for add-ins of type ICalculator
Collection<AddInToken> tokens = AddInStore.FindAddIns(typeof(ICalculatorHost), addInRoot);
string line = Console.ReadLine();
while (true)
{
AddInToken calcToken = ChooseCalculator(tokens);
AddInProcess addInProcess = new AddInProcess();
ICalculatorHost calc = calcToken.Activate<ICalculatorHost>(addInProcess, AddInSecurityLevel.Internet);
// run the add-in
RunCalculator(calc);
}
}
Och, kilka dodatkowych informacji. Zachowuję także odniesienie do uchwyt umowy w mojej klasie HostViewAdapter, który nadal nie wydaje się zrobić lewy. –