Avatar billede kennethv Nybegynder
26. september 2006 - 16:16 Der er 11 kommentarer og
1 løsning

Application.processmessages ?

Jeg kender til:

Application.ProcessMessages, men findes der noget tilsvarende til en service?
Avatar billede tolderlund Nybegynder
27. september 2006 - 09:15 #1
Det lyder som om du er på et vildspor.
Man bruger ikke Application.ProcessMessages i en service.
Hvorfor vil du gøre det?

En service har noget der hedder ServiceThread.ProcessRequests, men det er for at kunne behandle requests fra SCM.
http://www.tolderlund.eu/delphi/service/service.htm
Avatar billede kennethv Nybegynder
27. september 2006 - 09:37 #2
Jeg er helt med på at man ikke bruger application.processmessages i en service. Det er også derfor at jeg spørger om hvad man ellers bruger.
Avatar billede tolderlund Nybegynder
27. september 2006 - 10:05 #3
"hvad man ellers bruger" - bruger til hvad?
Hvad er det du vil?
Hvorfor synes du at du skal bruge sådan noget?
Det vil være nemmere at hjælpe hvis du er lidt mere konkret.
Avatar billede kennethv Nybegynder
27. september 2006 - 10:11 #4
:) Ja, du har ret.

I en service har jeg en løkke der venter på at en fil er blevet frigivet, dvs at den er klar til at kunne åbnes af min service. Og da jeg ikke ved hvor lang tid det vil tage, har jeg en fornemmelse at jeg bliver nødt til at gøre et eller andet for at frigive "tid" til andre opgaver som windows skal tage sig af. Og her kender jeg til application.processmessages, men kender ikke lige noget tilsvarende for en service.
Avatar billede tolderlund Nybegynder
27. september 2006 - 10:43 #5
Now you are talking business!
Application.ProcessMessages bruger man ikke til at frigive cpu, men det er en anden ting.
Det du skal gøre er at kalde Sleep eller WaitForSingleObject med en time-out.
Sleep er nok det simpleste, f.eks Sleep(100) eller lignende.
Avatar billede hrc Mester
27. september 2006 - 10:44 #6
sleep(0) mener jeg kan bruges.

Et citat fra internettet:

"Thread.Sleep(0);

This command tells the thread to yield the rest of its time-slice to other threads.  It did the trick, with no perceptable decrease in performance.

Now, I don't recommend this as a total solution to such problems.  But it certainly helped me out of a jam.  I can now continue the tests, while I examine my disk contention issues more carefully."
Avatar billede hrc Mester
27. september 2006 - 10:45 #7
Du får lige linket for han opretter/åbner/lukker/sletter en masse filer - og det gør du vist også.

http://dotnetjunkies.com/WebLog/jdixon/archive/2004/09/27/26934.aspx
Avatar billede tolderlund Nybegynder
27. september 2006 - 10:54 #8
Thread.Sleep(0); ???
Nu er du da gået over i .NET :-)
Avatar billede hrc Mester
27. september 2006 - 11:14 #9
Man snuser vel lidt til det - venter mest på Delphi for .NET 2.0 - men sleep(0) virker nu også i VCL-versionen.
Avatar billede kennethv Nybegynder
27. september 2006 - 12:00 #10
Jeg fandt sådan en. Kan den bruges?

procedure TALBackupCheck.ProcessMessages;
var Msg: TMsg;
begin
  if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
end;
Avatar billede tolderlund Nybegynder
27. september 2006 - 12:50 #11
Nej!
Du har allerede fået at vide hvad du skal bruge.
Avatar billede kennethv Nybegynder
27. september 2006 - 12:52 #12
Bevares. Det virkede bare som om at I var uening i det. Men så bruger den løsning.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester