Thema: Delphi beep oder windows.beep()

Einzelnen Beitrag anzeigen

Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#16

Re: beep oder windows.beep()

  Alt 7. Nov 2003, 15:02
Hallo, ist hier noch wer ?


Ich habe mal versucht und hoffentlich nichts vergessen, einige Punkte zu zeitkritischen Programmen unter 2000/XP aufzuschreiben:

1.
PriorityClass von MainProcess hochsetzen - Vorsicht, kann ganzen Computer
lahmlegen - dafür aber die ThreadPriority (vom MainProcess) so niedrig wie möglich

Delphi-Quellcode:
  if SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS) then
  begin
    SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_IDLE);
  end;
2.
die originale Zeitauflösung von 2000/XP ist auf 10ms gesetzt, deshalb

Delphi-Quellcode:
  TimePeriod := 1;
  // die Zeitauflösung auf einen Wert < 10, der Windows genehm ist, setzen
  while (timeBeginPeriod(TimePeriod) = TIMERR_NOCANDO) and (TimePeriod < 10) do
    Inc(TimePeriod);
und am Schluß wieder zurücksetzen

Delphi-Quellcode:
  if TimePeriod <> 10 then
    timeEndPeriod(TimePeriod);
3.
Thread erzeugen, der zeitkritischen Arbeit ausführen soll (das ist das Schnellste, was geht)

Delphi-Quellcode:
  MyThread := TMyThread.Create(True);
  MyThread.Priority := tpTimeCritical;
4.
in Loop vom Thread auf keinem Fall

  Sleep(1); oder

  WaitForSingleObject oder etwas ähnliches vergessen, um Windows Luft zum Atmen zu lassen

Ich hoffe, es hilft.
Lutz
  Mit Zitat antworten Zitat