Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy (10) und Threads - TIdIMP4 entkoppeln vom MainThread ? (https://www.delphipraxis.net/153964-indy-10-und-threads-tidimp4-entkoppeln-vom-mainthread.html)

moelski 23. Aug 2010 08:51

Indy (10) und Threads - TIdIMP4 entkoppeln vom MainThread ?
 
Moin !

Ich habe hier ein Indy TIdIMAP4 am laufen. TIdIMAP4 ist dabei in einer Klasse eingefügt welche wiederum vom Hauptprogramm genutzt wird. In Kürze schaut das so:
Delphi-Quellcode:
type
   TGetMails = Class(TPersistent)
     private
       TheMsg               : TIdMessage;

     published
       TheImap             : TIdIMAP4;
       MailDecode          : TMailDecode;
       UsersFolders        : TStringList;
   end;
Nun kommt es gelegentlich vor, das sich die Anwendung aufhängt. Und derzeit tappe ich noch etwas im Dunkelen woher das kommt.

Kann ich hier ein Thread Problem bekommen weil ich vom Hauptthread direkt auf die Daten zugreife die ich über TIdIMAP4 erhalte?

moelski 8. Sep 2010 12:08

AW: Indy (10) und Threads - TIdIMP4 entkoppeln vom MainThread ?
 
*pull*

Keiner eine Idee zu diesem Thema?
Muss doch schon mal jemand anderes drüber gestolpert sein!?

Grüße

SirThornberry 8. Sep 2010 12:49

AW: Indy (10) und Threads - TIdIMP4 entkoppeln vom MainThread ?
 
Anhand deines Quellcodes ist nicht ersichtlich wo/wie du auf den Hauptthread zugreifst bzw. vom Hauptthread auf Daten eines anderen Threads.

moelski 8. Sep 2010 14:05

AW: Indy (10) und Threads - TIdIMP4 entkoppeln vom MainThread ?
 
Moin !

Zitat:

Anhand deines Quellcodes ist nicht ersichtlich wo/wie du auf den Hauptthread zugreifst bzw. vom Hauptthread auf Daten eines anderen Threads.
Ok evtl. habe ich mich da nicht genau ausgedrückt.

TIdIMAP4 ist im Kern abgeleitet von TIdTCPClient. TIdTCPClient nutzt ja einen Thread zum Daten abholen wenn ich nicht irre. Man kann zumindest in der IDE erkennen das bei einem Connect ein Thread erzeugt wird (allerdings wird er auch ziemlich schnell wieder gekillt).

Nun stellt sich mir die Frage was passiert wenn ich Daten vom meiner TIdIMAP4 Instanz abholen will. Kann ich dann unter umständen ein Thread Problem bekommen wenn ich z.B. die Anzahl Mails in einem Postfach abfrage?

Auf meinen Code umgemünzt würde das bedeuten ...
Ich erstelle mir eine Instanz meiner Klasse.

Delphi-Quellcode:
Test := TGetMails.Create;
So und im folgenden Schritt mache ich den Connect, Postfach auswählen und dann z.B.

Delphi-Quellcode:
Test.TheImap.MailBox.TotalMsgs
Greife ich nun ggf. auf Daten eine Threads zu? Und kann das zu Problemen führen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 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