AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi *.dll Anfrage / Lange Funktionen abbrechen
Thema durchsuchen
Ansicht
Themen-Optionen

*.dll Anfrage / Lange Funktionen abbrechen

Ein Thema von DerBadejunge · begonnen am 7. Apr 2005 · letzter Beitrag vom 9. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
DerBadejunge

Registriert seit: 7. Apr 2005
8 Beiträge
 
#1

*.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 20:41
Hallo ihr lieben Delphine,
ich komme eigentlich aus dem C++ Crosscompiling
doch muss ich nun für die Schule auf Delphi zurückgreifen.

Die Funktion sei:

function fkt1(S: PChar): Longbool; stdcall; external 'libxyz.dll' index 1;

Soweit so gut,
doch wenn ich eine Rechenopperation habe, die 10 Minuten auf den Rückgabewert warten...
Was dann?
Windoof denkt, dass alles tot ist und "Reagiert nicht" ...

Wie kann ich das GUI redrawen und ggf. einen Button haben, der mir den Call killt?

Bisher habe ich hier solche hilfe nur für Schleifen gesehen...

gruß
Wilhelm "DerBadejunge" K.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 20:51
Du könntest den Aufruf in einen Thread packen. Allerdings, wenn die Funktion i der DLL dir keine Abbruchmöglichkeit durch eine Callback Funktion gibt, dann dürfte es schwer fallen den Funktionsaufruf sauber abzubrechen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DerBadejunge

Registriert seit: 7. Apr 2005
8 Beiträge
 
#3

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 20:54
Danke,
Thread scheint ein nettes Stichwort.

Was hällst du davon ein Kernelsignal Kill,Stop,..., zu senden?

P.S. obwohl das Saubere abbrechen in diesem Fall egal ist. Oder pennt windows da?
was wäre ein Beispiel code oder eine Quelle des Wissens?!

gruß := Danke
Wilhelm
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 20:56
Zitat von DerBadejunge:
Danke,
Thread scheint ein nettes Stichwort.

Was hällst du davon ein Kernelsignal Kill,Stop,..., zu senden?

P.S. obwohl das Saubere abbrechen in diesem Fall egal ist. Oder pennt windows da?
was wäre ein Beispiel code oder eine Quelle des Wissens?!

gruß := Danke
Wilhelm
Hi,

Du terminierst den Thread, in dem deine Berechnung läuft, einfach mit der Methode MSDN-Library durchsuchenTerminateThread.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 20:58
Zitat von mirage228:
Du terminierst den Thread, in dem deine Berechnung läuft, einfach mit der Methode MSDN-Library durchsuchenTerminateThread.
Ich sagte "sauber".

Zitat von PSDK:
TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code and its initial stack is not deallocated. DLLs attached to the thread are not notified that the thread is terminating.

TerminateThread is a dangerous function that should only be used in the most extreme cases. You should call TerminateThread only if you know exactly what the target thread is doing, and you control all of the code that the target thread could possibly be running at the time of the termination.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 21:04
Kennst Du eine saubere Methode um eine Funktion abbrechen, von dem Du den Code nicht hast und auch sonst keine Möglichkeit besteht ihn irgendwie abbzubrechen?
Da ist TerminateThread die einzige Möglichkeit. Ist zwar die "Holzhammer-Methode", aber anders gehts manchmal nicht...

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
DerBadejunge

Registriert seit: 7. Apr 2005
8 Beiträge
 
#7

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 21:07
;o) Dank an euch!

Ein Punkt -- Die dll ist von mir.
Alles ist möglich!

gruß
Wilhelm

P.S. wird der Speicher nicht ohnehin freigegeben, wenn die Funktion gekillt wird?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 21:10
Die DLL ist von dir geschrieben? Sags doch gleich *g* Ich gehe mal davon aus, dass du in einer Schleife das berechnest, was deiner Aussage nach so lange dauert. Lager doch deine Funktion in einen Thread und checke alle X Sekunden, ob ein Bool-Wert durch eine andere Funktion gesetzt wurde und falls ja, kille die Funktion einfach mit einem Exit.
  Mit Zitat antworten Zitat
DerBadejunge

Registriert seit: 7. Apr 2005
8 Beiträge
 
#9

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 21:14
Super, danke.
Wie halte ich dann die GUI aufrecht?
Ich meine Buttons sperren krieg ich schon auf die Reihe.
Wie erstelle ich den Thread?
Sorry
<--- Delphi-Spasst

Aber ansonten bekomme ich das schon Selbst hin!
Dankeschön!

Gruß
Wilhelm
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: *.dll Anfrage / Lange Funktionen abbrechen

  Alt 7. Apr 2005, 21:17
Threading Tutorial gibt es auf meiner Seite.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr.
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