Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: komplexe Berechnungen -> Programm hängt

  Alt 9. Sep 2006, 12:46
Zitat von LL0rd:
Ich kann mir sehr gut vorstellen, dass der Aufruf von Application.ProcessMessages an performance kostet. Angenommen ich bau ein Timer ein, der alle 500ms Application.ProcessMessages aufruft, wird der Timer trotz der laufenden Berechnung dann gestartet?
HI,
du stellst genau die richtige Frage. Es würde nicht gut gehen, ein Timer wird mit sehr geringer Priorität betrieben und es wird nicht sichergestellt, dass dieser auch irgendwann mal aufgerufen wird. In der Tat kommt es hier bei hoher Last gerne mal zu Aussetzern. Zudem würde dein Formular dann alle 500ms springen (wenn es bewegt wurde).
Besser ist es, wenn du deine Berechnung in einen Thread auslagerst. Solange du nur einen Thread laufen hast, kann dieser sequentiell laufen. Der Vorteil ist, dass dein Thread immer solange rechnet bis das Form bewegt wird. Die Bewegung würde sofort gezeichnet werden und danach wieder der Thread die volle Rechenzeit bekommen. Möchtest du hier auf VCL-Komponenten zugreifen, musst du allerdings aufpassen, da muss der Zugriff synchronisiert werden (findest ein Tutorial zu Threads in der DP).
Der Vorteil hier ist halt, dass du keine unnötigen Application.Processmessages Aufrufe hast. Natürlich hat auch ein Thread seinen overhead, aber ich denke der Vorteil liegt halt im gezielteren Unterbrechen.

Gruß Der Unwissende

[Add]
Ok, der Luckie war wohl schneller!
Ok, der Klaus auch
[/ADD]
  Mit Zitat antworten Zitat