Har en .net windows service skrevet i C#. I den har jeg en tråd der udfører noget arbejde ved at kalde en unmanaged dll vba [DllImport / interop. De udførte operationer kan tage ret lang tid (20 min).
Problemet er nu at jeg, hvis servicen bliver stoppet, gerne på pæn vis vil kunne afbryde interop kaldet, for derefter at kalde en hurtig udført clean-up metode så der er rydet pænt op. Nogen forslag til hvordan man kan gøre det? Har overvejet om man kan udføre dette arbejde i et seperat AppDomain og så slå det ihjel, men jeg ved endnu ikke så meget om hvordan det fungerer.
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
Almindelig memory og aabne database connections boer jo frigives naar processen lukkes ned.
Hvis den kode slet ikke er skrevet til at kunne haandtere at blivet draebt, saa skal du jo lave oprydningen i din egen C# kode.
Kunnne det evt. vaere en mulighed at flytte dette arbejde fra en separat traad til en separat process - og saa bare lade den koere faerdig ? (kommunikation kunne laves via noget message queue)
Det externe lib er microsofts wimgapi. De funktioner jeg anvender kan også aktiveres igennem et command line tool, og der kan man uden (umiddelbart observerbare) problemer godt terminere processen ved ctrl+c, og derefter frigive resourcerne ved brug af en anden kommando. Pt gør jeg det at min service ved startup spammer løs af disse oprydningskommandoer hvilket da også virker. Vil bare hellere rydde op med det samme.
Det er ikke en option at lade en seperat process køre færdig, idet jeg skal holde styr på de filer der produceres af wimgapi, og det er lidt besværligt hvis der pludseligt dukker resultater op startet før servicen blev genstartet.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.