Prozessorbelastung auslesen und graphisch darstellen
-
Also so bald die Funktion verlassen wird, ist der Thread auch beendet. Doch es kann ja sein, dass die MCR abstürzt, sich verklemmt etc. Und schon steckt der Thread fest. Deswegen kann es sein, dass du den Thread dann mit Gewalt beenden musst.
-
Okay danke, dann weiß ich bescheid.
Liebe Grüße
Todd
-
Fragen zu WinAPI-Threads dann bitte im WinAPI-Forum stellen...

Aber der prinzipielle Aufbau ist nicht richtig:
Du greifst aus dem Thread heraus auf Komponenten in Form1 zu. Form1 läuft allerdings im Kontext des Answendungs-Threads. Hier mußt Du zwingend eine Absicherung schaffen, damit nicht beide Threads gleichzeitig auf Memo1 zugreifen können, sondern immer nur einer nach dem anderen (zB mittels einer CriticalSection).
Wenn Du TThread verwenden würdest, könntest Du dessen Synchronize-Methode verwenden und müßtest Dich nicht selbst um den Zugriffsschutz kümmern.
-
Hallo,
meine Frage hat sich während den Diskussionen wohl ein wenig von seiner Ausgangssituation weg bewegt. Wenn ich wieder Fragen zur WinAPI habe, dann im WinAPI Forum.
Jetzt aber nochmal zurückzukommen:
Das mit dem Memo war nur ein Beispiel. Verstehe aber was du meinst.
Aber was ist mit folgenden Szenario (versuche nämlich alles um die primitive Methode, die ich wenigstens auf Anhieb verstanden habe zu retten):
Im zweiten Thread wird nur die .dll aufgerufen.
In der Zwischenzeit, werden alle relevanten Objekte auf der Oberfläche deaktiviert.
Es ist dem Nutzer also nicht möglich weitere Eingaben zu machen, geschweige denn einen neuen Thread zu starten bzw. auf die .dll zuzugreifen.Der Nutzer wird ständig über den Fortschritt der Berechnungen informiert.
Nach dem die .dll durchgelaufen ist, wird ein Rückgabewert zurückgegeben.
Dieser Rückgabewert wird dem Hauptprogramm und daher dem Haupt-Thread übergeben. Der zweite zusätzliche Thread ist jetzt geschlossen.
Die Ergebnisse werden in einem RichEdit ausgegeben und alles ist in Ordnung, oder?MfG
Todd
-
Todd schrieb:
Es ist dem Nutzer also nicht möglich weitere Eingaben zu machen, geschweige denn einen neuen Thread zu starten bzw. auf die .dll zuzugreifen.
Der Nutzer wird ständig über den Fortschritt der Berechnungen informiert.
Nach dem die .dll durchgelaufen ist, wird ein Rückgabewert zurückgegeben.
Dieser Rückgabewert wird dem Hauptprogramm und daher dem Haupt-Thread übergeben. Der zweite zusätzliche Thread ist jetzt geschlossen.
Die Ergebnisse werden in einem RichEdit ausgegeben und alles ist in Ordnung, oder?Nein, denn auch wenn Du dem User keine Aktonen gestattest, kann es zu konkurienden Zugriffen kommen. Dazu reicht schon völlig aus, das Formular zu verschieben. Dabei kann es schon geschehen, dass der Hauptthread auf das RichEdit zugreift, während Du es aus dem Arbeitsthread gerade befüllst -> bestenfalls eine Fehlermeldung a la 'auf dem Canvas kann nicht gezeichnet werden', schlimmstenfalls ein kompletter Absturz.
Bei allen Zugriffen auf irgendetwas, das nicht im Kontext des Threads erzeugt wurde, MUSST Du eine Absicherung schaffen. Bei einem RichEdit ist das praktisch schon so gut wie unmöglich.
-
Danke für deine Hilfe.
Dann doch den TThread von Borland benutzen....
Heieiei
Ich werde mir nochmal das Beispiel von Borland ansehen und versuchen dort durchzusteigen.Falls ich es dann immernoch nicht kapiert hab, melde ich mich wieder.
Liebe Grüße
Todd
-
Mach das... Sieht auf den ersten Blick schlimmer aus, als es ist.
Versuch einfach nur mal die DLL aus einem Thread heraus anzusteuern. Die Statusinformationen und den Rückgabewert kannst Du erst Mal aussen vor lassen. Du kannst mich dann gerne fragen, wie Du die notwendigen Parameter in den Thread bekommst und den Rückgabewert zurück in das Formular.
Grüße Joe
PS Morgen habe ich allerdings eine Schulung, werde also, wenn überhaupt, erst spät abends wieder hier reinsehen...
-
Danke für dein Angebot.
Sei mir aber auch nicht böse, wenn ich es bis zum Wochenende nicht schaffe.
Bin bis zu den Ohren in Arbeit versunken.Melde mich am WE und entweder überrasche ich euch dann alle mit meinem Wissen oder warte geduldig auf fundierte Hilfe.

Liebe Grüße
ToddP.S.: Ich mache dann lieber einen neuen Forumsthread auf, da der Titel hier ja nicht zutreffend ist...