Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Einfrieren des Programms verhindern (https://www.delphipraxis.net/102238-einfrieren-des-programms-verhindern.html)

Todd 25. Okt 2007 12:59


Einfrieren des Programms verhindern
 
Hallo zusammen,

ich habe ein Programm, dass vom Nutzer Daten entgegennimmt und diese dann an eine .dll weitergibt.
Dort findet die Berechnung statt.

Das Programm wartet bist der Rückgabewert vorhanden ist und verfährt dann weiter.

Diese Berechnung kann unter Umständen Stunden dauern.

Wie kann ich verhindern, dass durch die lange Berechnungszeit mein Programm "einfriert" bzw. einen Status "keine Rückmeldung" bekommt?

Vielen Dank im Voraus
Todd

Nuclear-Ping 25. Okt 2007 13:03

Re: Einfrieren des Programms verhindern
 
Stunden ... ?

Application.ProcessMessages in die Berechnungsschleife.

peschai 25. Okt 2007 13:04

Re: Einfrieren des Programms verhindern
 
Bei solchen aktivitäten bitte prüfen ob es nicht besser wäre mit threads zu arbeiten

RavenIV 25. Okt 2007 13:14

Re: Einfrieren des Programms verhindern
 
zwei Ansätze fallen mir da ein:

1) einen seperaten Thread, der die Werte an die DLL gibt und auf Antwort wartet.

2) Asynchrone Abarbeitung. An die DLL ne Nachricht schicken mit den Daten. Erst mal weiter machen. Irgendwann schick die DLL eine Nachricht mit dem Ergebnis zurück.

Todd 25. Okt 2007 13:17

Re: Einfrieren des Programms verhindern
 
Danke für eure Hilfe.

Das mit dem Thread finde ich gut. Obwohl ich gar nicht weiß was ein Thread ist und wie ich einen neuen Anlege.

Die .dll läuft autark und hat mit dem eigentlichen Programm nichts weiter zu tun, als dass ihr Werte übergeben werden und nach Beendigung der Rückgabewert an das Programm übergeben wird.

Die Rechenzeit hängt von Nutzer ein, der diese in MIN angibt. Es ist ein sehr aufwendiger Algorithmus, der seine Optimalität dadurch erzielt, je mehr Zeit man ihm zum arbeiten lässt.

Aber zurückzukommen auf das Thema "Thread".

Wie legt man solchen an und was genau ist damit gemeint?

Vielen Dank

Todd

Luckie 25. Okt 2007 13:22

Re: Einfrieren des Programms verhindern
 
Zitat:

Zitat von Todd
Aber zurückzukommen auf das Thema "Thread".

Wie legt man solchen an und was genau ist damit gemeint?

Forensuche hilft: Hier im Forum suchenThreads.

crasher1985 25. Okt 2007 13:35

Re: Einfrieren des Programms verhindern
 
mmhh also ich weiss nicht genau ob es das im Delphi auch gibt aber ähnliches bestimmt.
im C# jedenfalls gibt es seit .Net 2.0 eine Komponente BackroundWorker welche eigentlich das gleiche wie Threads macht dieses aber sehr vereinfacht!

peschai 25. Okt 2007 13:41

Re: Einfrieren des Programms verhindern
 
coole antwort
Zitat:

Das mit dem Thread finde ich gut. Obwohl ich gar nicht weiß was ein Thread ist und wie ich einen neuen Anlege.
:stupid:

Thorben_Ko 25. Okt 2007 14:05

Re: Einfrieren des Programms verhindern
 
Tut

VLl hillft dir das, mir hat es gereicht als basis wissen :D

Thorben

BasicX 25. Okt 2007 14:09

Re: Einfrieren des Programms verhindern
 
Hi,
mir hat diese Tutorial sehr geholfen:
klick

MfG BasicX


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz