Ciao raga.
Premetto che programmo in Borland C++ Builder.
Qualcuno sa come funzionano le SERVICE APPLICATION ?
Sostanzialmente mi sono creato un programma gestionale per la gestione della produzione di Bigiotteria ecc.. , il problema e' che devo poter controllare certi dati di produzione a distanza, in quanto l'industria non e' qui in Italia.
L'idea (come del resto c'e' ne sono tante), e' stata quella di crearmi un SERVICE APPLICATION, ovvero un servizio che viene installato sul pc.
Il problema e' che non riesco a capire il perchè quando avvio questo servizio, mi occupa il 100% delle risorse della CPU, in pratica mi satura le risorse disponibili, non permettendomi di fare nient'altro.
Questa e' un esempio di implementazione del SERVICE APPLICATION:
TService1 *Service1;
//---------------------------------------------------------------------------
__fastcall TService1::TService1(TComponent* Owner)
: TService(Owner)
{
// questo servizio deve rimanere in ascolto sulla porta 2001
}
TServiceController __fastcall TService1::GetServiceController(void)
{
return (TServiceController) ServiceController;
}
void __stdcall ServiceController(unsigned CtrlCode)
{
Service1->Controller(CtrlCode);
}
//---------------------------------------------------------------------------
void __fastcall TService1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
char *Buffer = NULL;
int len = Socket->ReceiveLength();
if (len > 0)
{
try
{
Buffer = (char *)malloc(len);
Socket->ReceiveBuf((void *)Buffer, len);
Stream->Write(Buffer, strlen(Buffer));
}
__finally
{
free(Buffer);
}
Stream->Seek(0, soFromBeginning);
AnsiString LogFile = "C:\\Temp\\WebLog";
LogFile = LogFile + IntToStr(ServiceThread->ThreadID) + ".log";
Stream->SaveToFile(LogFile);
}
}
//---------------------------------------------------------------------------
void __fastcall TService1::ServiceExecute(TService *Sender)
{
Stream = new TMemoryStream();
try
{
ServerSocket1->Port = 6701; // WWW port
ServerSocket1->Active = true;
while (!Terminated)
{
ServiceThread->ProcessRequests(false);
}
ServerSocket1->Active = false;
}
__finally
{
delete Stream;
}
}
//---------------------------------------------------------------------------
Qualcuno sa darmi qualche consiglio ?
![]()