![]() |
Thread.Queue in verschachtelten Threads [unter Android]
Hallo zusammen,
ich habe mal eine Frage zu Treads. Ich bekomme beim Aufruf eines Konstrukts wie unten beschrieben unter Android ein Segmentation Fault. Wenn eine Prozedur im Thread oder auch von einem tiefer verschachtelten Thread aufgerufen wird, und dann mit Thread.Queue zum MainThread synchronisiert wird dann sollte das doch in JEDEM Fall korrekt funktionieren. Deadlocks o.ä. gibt es dabei doch nicht, oder etwa doch ? Kann es sein das dieses Bitmap im Thread auch einen anderen Kontext bekommt als im MainThread, und das es deshalb vielleicht kracht ? Jedenfalls kommt das Segmantation Fault wenn ich aus der Routine irgend etwas im UI Thread anfasse.
Delphi-Quellcode:
Rollo
procedure TDiesIstEinTread.EvImThreadContext_KannAberAuchTieferVerschachteltSein(Image: TBitmap);
begin if Assigned(procResult) then begin TThread.Queue(nil, procedure begin procResult( Image ); // Dies sollte doch immer im MainThread ausgefuehrt werden, // Egal wie tief verschachtelt ? end ); end; end; |
AW: Thread.Queue in verschachtelten Threads [unter Android]
Ja, wird es auch ... aber es wird eben in die Queue geschrieben und somit irgendwann abgearbeitet.
Was machst du dann mit der übergebenen
Delphi-Quellcode:
Instanz? Schmeisst du die evtl. direkt nach dem Aufruf aus dem Speicher? ;)
Image
Und so ganz nebenbei ... wie kommst du an diese Bitmap-Instanz ... erzeugst und bearbeitest du diese innerhalb eines Threads? Dann verabschiede dich davon ... denn
Delphi-Quellcode:
und Threads vertragen sich unter Delphi nicht ...
TBitmap
(Was unter FMX und Windows noch halbwegs funktioniert fliegt dir unter Android auf die Füße) |
AW: Thread.Queue in verschachtelten Threads [unter Android]
Das Verarbeiten des Bitmaps funktioniert auch noch, es wird in eine andere Variable gespeichert.
Aber ich möchte noch verhindern das während des Speicherns jemand eine Taste drückt. Sobald ich irgendetwas sonst anfasse, oder anzeige gibt es Segmentation Fault. UPDATE: Als Beispiel ein einfaches Flag in der form setzen, so das dies andere Aktionen blockiert ==> Segmentation Fault Wenn ich nicht besonderes anfasse geht es gut Rollo |
AW: Thread.Queue in verschachtelten Threads [unter Android]
Zitat:
|
AW: Thread.Queue in verschachtelten Threads [unter Android]
Hallo Sir Rufo,
ja, in der Prozedur habe das mit Bitmap.Assign(bmp); zugeordnet, und dann als File gespeichert. Das funktionierte alles bisher korrekt. Erst danach passierte etwas, beim Zugriff. Aber es scheint nicht am Thred.Queue zu liegen, darum gings mir ja. Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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