| Betreff | API-Aufruf canceln |
| Von | =?iso-8859-1?Q?Heinz-Mario_Fr=FChbeis?= |
| Datum | 31.10.2009 20:56:19 |
Hallo!
Gibt es eine Möglichkeit eine API-Funktion während sie ausgeführt wird
terminieren?
Bsp.:
Die AlphaBlend-Funktion hat eine gewisse Dauer in der Laufzeit, Abhängig von
der Größe der Bilder die die DC's beinhaltet.
Bei Focus setzen mehrerer P.Box's, die alle mit AlphaBlend bearbeitet
werden, hintereinander könnte eigentlich ein voriger API-Aufruf gecancelt
werden, weil das Ergebnis durch den neuen Focus komplett ersetzt wird.
AlphaBlend läuft aber immer noch durch und das neue setzen des Focus auf
eine andere P.Box wird dadurch quasi verspätet aufgerufen.
Also:
Kann man einen API-Aufruf während die API-Funktion läuft canceln?
Hoffe das jemand etwas darüber weiß und mir einen Tipp und vielleicht sogar
eine Hilfe geben kann.
viele Grüße
Heinz-Mario
| Betreff | Re: API-Aufruf canceln |
| Von | "Herfried K. Wagner [MVP]" |
| Datum | 31.10.2009 22:08:22 |
Heinz-Mario Frühbeis schrieb:
> Kann man einen API-Aufruf während die API-Funktion läuft canceln?
Nein (Fälle, in denen mehrere Threads im Spiel sind, einmal
ausgenommen), außer das ist explizit für die Funktion vorgesehen (etwa
über eine Rückrufprozedur, die das Signalisieren des Abbruchs erlaubt).
Bedenke, daß innerhalb der API-Funktion evtl. temporäre Ressourcen
angelegt werden, die kontrolliert freigegeben werden müssen.
--
M S Herfried K. Wagner
M V P
V B
| Betreff | Re: API-Aufruf canceln |
| Von | =?iso-8859-1?Q?Heinz-Mario_Fr=FChbeis?= |
| Datum | 31.10.2009 23:27:01 |
"Herfried K. Wagner [MVP]"
news:eFESB5mWKHA.4780@TK2MSFTNGP05.phx.gbl...
> Nein (Fälle, in denen mehrere Threads im Spiel sind, einmal ausgenommen),
> außer das ist explizit für die Funktion vorgesehen (etwa über eine
> Rückrufprozedur, die das Signalisieren des Abbruchs erlaubt).
>
> Bedenke, daß innerhalb der API-Funktion evtl. temporäre Ressourcen
> angelegt werden, die kontrolliert freigegeben werden müssen.
>
Weiß ich Bescheid.
Danke für die Antwort.
vg
Heinz-Mario
| Betreff | Re: API-Aufruf canceln |
| Von | =?iso-8859-1?Q?Heinz-Mario_Fr=FChbeis?= |
| Datum | 01.11.2009 01:07:37 |
"Herfried K. Wagner [MVP]"
news:eFESB5mWKHA.4780@TK2MSFTNGP05.phx.gbl...
> Nein (Fälle, in denen mehrere Threads im Spiel sind, einmal ausgenommen),
> außer das ist explizit für die Funktion vorgesehen (etwa über eine
> Rückrufprozedur, die das Signalisieren des Abbruchs erlaubt).
>
> Bedenke, daß innerhalb der API-Funktion evtl. temporäre Ressourcen
> angelegt werden, die kontrolliert freigegeben werden müssen.
Etwas anderes vielleicht noch.
AlphaBlend gibt ja einen Wert zurück.
Ich kann ja vielleicht abfragen, ob der VariablenWert, vielleicht zu Beginn
meiner Routine, auf "-1" gesetzt, sich auf > -1 geändert hat?
Wird der Wert "Erfolg" erst nachdem die komplette Funktion durchlaufen wurde
zurückgegeben?
vg
Heinz-Mario
| Betreff | Re: API-Aufruf canceln |
| Von | "Thorsten Albers" |
| Datum | 01.11.2009 01:22:15 |
Heinz-Mario Frühbeis
<806CA295-30E0-484E-BBA5-97BB59C462EE@microsoft.com>...
> Etwas anderes vielleicht noch.
> AlphaBlend gibt ja einen Wert zurück.
> Ich kann ja vielleicht abfragen, ob der VariablenWert, vielleicht zu
Beginn
> meiner Routine, auf "-1" gesetzt, sich auf > -1 geändert hat?
> Wird der Wert "Erfolg" erst nachdem die komplette Funktion durchlaufen
wurde
> zurückgegeben?
Ja. Der Rückgabewert wird auch nicht einer Variablen zugewiesen, sondern
über den Stack zurückgegeben. Du müßtest dann also eine parallel laufende
Funktion haben, die ständig den entsprechenden Speicher überprüft. Aber
auch das würde in der Regel nicht viel bringen, da C/C++-Prozeduren
üblicherweise den Rückgabewert erst mit dem Verlassen der Prozedur setzen
(z.B. 'return TRUE').
--
Thorsten Albers
albers (a) uni-freiburg.de
| Betreff | Re: API-Aufruf canceln |
| Von | =?iso-8859-1?Q?Heinz-Mario_Fr=FChbeis?= |
| Datum | 01.11.2009 02:43:34 |
"Thorsten Albers"
news:01ca5a89$5f7a2420$ab01a8c0@thalk8s8x...
> Heinz-Mario Frühbeis
> <806CA295-30E0-484E-BBA5-97BB59C462EE@microsoft.com>...
>
> Ja. Der Rückgabewert wird auch nicht einer Variablen zugewiesen, sondern
> über den Stack zurückgegeben. Du müßtest dann also eine parallel laufende
> Funktion haben, die ständig den entsprechenden Speicher überprüft. Aber
> auch das würde in der Regel nicht viel bringen, da C/C++-Prozeduren
> üblicherweise den Rückgabewert erst mit dem Verlassen der Prozedur setzen
> (z.B. 'return TRUE').
OK.
Danke noch mal.
vg
Heinz-Mario
Keine Kommentare:
Kommentar veröffentlichen