Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# Hohe Auslastung - Programm hängt (https://www.delphipraxis.net/54575-hohe-auslastung-programm-haengt.html)

zappel 6. Okt 2005 20:40


Hohe Auslastung - Programm hängt
 
Hallo!

Ich habe ein Programm zur Konvertierung von Bildern mit C# geschrieben. Zu Testzwecken habe ich nun 100 jpg-Bilder (315MB) durch das Programm gejagd. CPU-Auslastung lag bei ständig nahezu 100%, ist ja auch nachvollziehbar. Ds Programm aber scheint "tot" zu sein. Wenn ich ein anderes Programm vor meins bringe und dann wieder schließe, ist mein ganzes Programm weiß. Das Problem sollte verständlich sein.
Ein Kumpel von mir hat gesagt, ich müsse nach jeder Iteration der Konvertierung dem Programm die "Chance" geben, die Windows-Nachrichten abzuarbeiten. Ich weiß ungefähr, was er meint, nur habe ich von dem Thema keine Ahnung.
Kann mir jemand darüber ein wenig erklären oder mir einen Link geben? Ich weiß auch nicht genau, wonach ich da im Internet suchen kann. Ein paar Stichworte würden schon genügen, damit ich weiß, wonach ich suchen kann.

Die entsprechenden Funktionsnamen würden natürlich auch nicht schaden. :wink:

mirage228 6. Okt 2005 20:47

Re: Hohe Auslastung - Programm hängt
 
Hi,

Wenn Du in einer for-Schleife jeweils am Ende nach der Bearbeitung, Application.DoEvents() aufrufst, sollte es gehen :)

mfG
mirage228

zappel 6. Okt 2005 20:49

Re: Hohe Auslastung - Programm hängt
 
Danke! Genau das, was ich gesucht habe! :mrgreen:

Speedmaster 6. Okt 2005 21:54

Re: Hohe Auslastung - Programm hängt
 
Nur so: In was möchtest du den dein Bild Konvertieren?? Erscheint mir irgendwie nicht Sinnvoll, da .NET ja die meisten Dateiformate von Haus aus unterstützt!

Alexander 7. Okt 2005 08:59

Re: Hohe Auslastung - Programm hängt
 
Alternativ einfach den Algo für's konvertieren in einen eigenen Thread auslagern. Das ist wohl der beste Weg.

zappel 7. Okt 2005 14:16

Re: Hohe Auslastung - Programm hängt
 
@Speedmaster:

Das Programm habe ich sozusagen für meine Webseite geschrieben. Dort sind mehrere hundert Bilder zu sehen. Mit dem Programm kann ich nun die von der Digicam geladenen Bilder direkt in der gewünschten Größe (inkl. Thumbnail) speichern. Dazu lade ich jeweils ein Bild, ändere die Größe und speichere es wieder. Also ich habe schon die .net-Methoden benuzt.

@Alexander:

Die Variante mit Application.DoEvents() reicht schon völlig aus. Das Programm ist eine Art Assistent und der letzte Schritt ist halt das Konvertieren. Es reicht also aus, wenn man den Mauszeiger bewegen kann und nicht das Gefühl hat, das Programm ist "tot".

jim_raynor 7. Okt 2005 14:27

Re: Hohe Auslastung - Programm hängt
 
Zitat:

Zitat von zappel
Die Variante mit Application.DoEvents() reicht schon völlig aus. Das Programm ist eine Art Assistent und der letzte Schritt ist halt das Konvertieren. Es reicht also aus, wenn man den Mauszeiger bewegen kann und nicht das Gefühl hat, das Programm ist "tot".

Wichtig ist bei der Variante aber, dass man wirklich alle Eingabefelder und Buttons deaktivert. Sonst kann man ohne Probleme ein weiteres die gleiche Aktion starten und dann wirds sehr chaotisch ;)

zappel 7. Okt 2005 14:34

Re: Hohe Auslastung - Programm hängt
 
Ja klar, habe ich gemacht. Während der Konvertierung kann man in dem Programm nichts mehr machen. Einzig den Fortschritt kann man an einer ProgressBar ablesen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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-2025 by Thomas Breitkreuz