Et lite tips om hvordan du bruker COM med Windows Services.
I dag har jeg prøvd å få tilgang til et XML-dokument fra en Windows-tjeneste. Når jeg prototyper mine klasser ved hjelp av en Windows danner app alt fungerte fint, men når jeg brukte de samme klassene i en Windows-tjeneste jeg holdt får feil " CoInitialize har ikke blitt kalt ".
CoInitialize må kalles for hver tråd når bruke noen form for COM-objektet. Fangsten er at TService klassen som leveres med Delphi skaper sin egen støtte tråd for å utføre OnExecute hendelsen. Når du vet dette, er det ganske enkelt å rette koden
prosedyre TMyService.ServiceExecute (Sender: TService);
begynne
CoInitialize (null);
prøve
//din kode her
endelig
CoUnInitialize,
ende;
ende;
Previous:Fast Refactoring med Castalia