![]() |
Optimierung der Prioritäten
wenn ich aus der meiner MP3-Anwendung heraus ein externes Programm starte, kommt es genau beim Start zu hohen CPU-Auslastungen, so das ich kurze Aussetzer bei der Wiedergabe von MP3 habe.
Ich habe mich mal in Thread und Process-Prioritäten eingelesen und auch soweit Resultate, nur wie macht man es richtig bzw optimiert ? Ich möchte die externe Anwendung soweit wie möglich in der CPU-Auslastung gebremst starten, sodas es die Hauptanwendung nicht stört. Hier mal mein Code dazu:
Code:
var
app,appWithPath,WndClass: String; ProcID,ThreadID: Cardinal; AppWindow,Wnd : HWnd; begin .... ProcID := 0; AppWindow := 0; RunProcess(appWithPath, SW_SHOW, FALSE, @ProcID); SetProcessPriorty(ProcID,IDLE_PRIORITY_CLASS); // zum testen ! SetThreadPriority(GetCurrentThreadId,THREAD_PRIORITY_IDLE); repeat AppWindow := GetWndHandle(ProcID); application.ProcessMessages; sleep(500); until (AppWindow <> 0) or stopSearch; //stopSearch durch Timer, falls gar nicht findet if AppWindow <> 0 then begin Sleep(500); SetThreadPriority(GetCurrentThreadId,THREAD_PRIORITY_NORMAL); SetProcessPriorty(ProcID,NORMAL_PRIORITY_CLASS); // zum testen ! end; .... |
Re: Optimierung der Prioritäten
Bist du dir denn sicher, dass die Aussetzer durch die hohe CPU-Last verursacht werden? Ich würde nämlich auf ein kurzzeitiges Aussetzen des Datenstroms tippen, weil die Platte gerade mit anderen Dingen beschäftigt ist.
Hier wäre dann die Lösung nicht ein umsetzen der Prioritäten, sondern ein Vergrößern des Playerbuffers. |
Re: Optimierung der Prioritäten
Zitat:
Die Schleife frist schon ziemliche Resourcen, bis die nach Start des ext. Progs aufgehoben wird. Was im Code jetzt nicht zu sehen ,ist ist die alternative Findwindow innerhalb der Schleife. Der Puffer des Player ist Standart, die CPU-Zeit 100% gewesen bevor sleep hinzukam. Was mich jetzt interessiert ist, ob am Code da was zu optimieren gilt ? Macht das Sinn, so die Prios zu setzen um die aus meinem Prog. aufgerufenen Apps "im Hintergrund" starten zu lassen (Resourcenschonend) ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz