| Autor |
Beitrag |
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 04.01.10 19:22
Bieten die Indys denn keine asynchronen Methoden an? Normalerweise muss man für solche Aufgaben gar keinen Thread verschwenden oder sich überhaupt um das Thema Multithreading kümmern, sondern lässt den Treiber das regeln.
_________________ >λ=
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mo 04.01.10 19:25
Hey,
wenn ich den Thread terminiere, dann wird vorher immer ne Meldung ausgegeben, ob er wirklich unterbrochen weden soll. Also ein Terminate wird definitiv nicht aufgerufen (jedenfalls nicht von mir). Und die Break-Zeile, sowie die letzte Zeile wird auch nicht ausgeführt (siehe oben). Das hatte ich schonma alles geloggt und mit dem Debuger angesehen. Aber Da der Thread mehrere hundert Datensätze bearbeitet is klar das ich nich alles durchdebugen kann...
MfG Bergmann
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 04.01.10 19:28
Was passiert denn in den ganzen Unterklassen? MP3.GetAudiofile, Int.FindTitel usw. Wird da noch aufs Formular zugegriffen?
Und, schreib mal testweise um das ganze ein try...except... end; und lass die Exception ausgeben oder so.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mo 04.01.10 19:49
Hey,
ne die greifen nich auf die Form zu. Die erstellen sich n TIdHTTP-Objekt un surfen dann im Netz. Manchma wirft das Indy-Objekt dann mit Exceptions, aber die hab ich abgefangen. Andere Exceptions kommen nich, denn die würde der Compiler ja dann eh anzeigen.
@Kha: (sry hab ich jetzt erst gelesen). Wird denn die IndyHTTPClient-Komponente von nem Treiber gesteuert?
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 04.01.10 20:29
Bergmann89 hat folgendes geschrieben : | | Andere Exceptions kommen nich, denn die würde der Compiler ja dann eh anzeigen. |
Och.. wenn die in nem Thread geworfen werden, wär ich mir da nicht immer so sicher. Hatte da auch schon manch merkwürdige Effekte.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Mo 04.01.10 20:52
Probier trotzdem mal in der schleife ein try..except...showmessage()...end
und vor das letzte terminate eine showmessage
und ebenfalls eine showmessage vor das break...
das mache ich immer...als alternative zum debuggen: messageboxes oder log ausgaben
könntest du auch machen.
vor jedem durchlauf ne ausgabe in eine datei und gucken, obs immer bei einer bestimmten auftritt
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 04.01.10 20:58
In nem Thread ne ShowMessage.. ist das nicht auch schon ein Zugriff auf die VCL, und sollte vermieden werden?
dann doch lieber eine LogDatei. Oder OutputDebugString vielleicht noch?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 04.01.10 21:21
Bergmann89 hat folgendes geschrieben : | | @Kha: (sry hab ich jetzt erst gelesen). Wird denn die IndyHTTPClient-Komponente von nem Treiber gesteuert?. |
Ja, von dem deiner Netzwerkkarte  .
_________________ >λ=
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Mo 04.01.10 21:45
Hey,
ich habs (glaub ich). Er schmeißt ne Exception, die ich in ner anderen Version schon behoben hatte, deshalb hab ich da nich nochma nachgesehen. Also jetzt sollte es gehen. Danke an alle!
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Di 05.01.10 17:56
Xentar hat folgendes geschrieben : | In nem Thread ne ShowMessage.. ist das nicht auch schon ein Zugriff auf die VCL, und sollte vermieden werden?
dann doch lieber eine LogDatei. Oder OutputDebugString vielleicht noch? |
ja, richtig.
Es kommt dabei u.U. auch zu sehr lustigen Messageboxen...Zum Teil echt nicht vorhersehbar, was da passiert.
Aber zum Testen kann man das mal machen, da es sehr schnell geht.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 05.01.10 18:08
ShowMessage in einem Thread ist glaube ich so ziemlich das schlimmste, was man machen kann. Außer vielleicht Tempomat im Wohnmobil einstellen und dann nach hinten gehen zum Kaffee kochen. 
_________________ We are, we were and will not be.
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Di 05.01.10 18:21
stimmt...wenn man showmessage in einem thread verwendet wird der halbe pc explodieren, da man unsychron auf arbeitsspeicher zugreift. durch die vielen gleichzeitigen zugriffe überlastet der Bus, beginnt zu glühen. dadurch versagt das kühlsystem und die cpu und der ram werden fast gleichzeitig explodieren, diese explosion erfasst die grafikkarte, die dadurch ebenfalls in die luft geht. Wenn man jetzt nicht schnell genug den Stecker zieht, hat man seine Festplatte gleich mit vernichtet durch sehr hohe Ströme, da diese ja jetzt nicht mehr zu CPU und und Grafikkarte abfließen können.
Aber das geht ja noch. Viel schlimmer ist es, 1 Mio. Strings zu hashen, um die Anzahl der Vorkommen zu zählen. Dann explodiert nämlich alles gleichzeitig.
Als Lektüre dazu empfehle ich "Quantenphysik für Anfänger" von A. Schwafel.
Greetz Flamefire
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Di 05.01.10 18:49
Hey,
bei nem ShowMessage im Thread kan ch men Prog gar nich kompilen, also bin ich nich derjenige, der den Weltuntergang auslöst
Tipp an alle anderen: haltet zur Sicherheit die Hand an den Stecker um schnell ziehen zu können xD
MfG
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Di 05.01.10 18:51
Lol Flamefire, dein Nick sagt wohl alles
Wie schauts mit der Textbox aus, ist writeln() Threadsicher? Dann könnte man die Konsole zum testen verwenden.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Di 05.01.10 19:37
Das ganze ging eher an Gausi... ^^
Warum kannst du es nicht compilen? unter uses "Dialogs" eingebunden?
Statt Konsole wäre die Debugausgabe besser. Hab aber nie damit gearbeitet...ging immer mit Messageboxen...
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Di 05.01.10 19:40
achne sry, im programm kommt dann der fehler: Leinwand/Bild erlaubt kein zeichen...
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Di 05.01.10 19:50
ok, dann debugausgabe...
das ist ein vcl fehler
wobei: du könntest auch log breakpoints nehmen.
also einen breakpoint auf jede zeile, die du willst, dann auf dessen eigenschaften und aktivieren, dass ne meldung kommt und dass er nicht anhällt
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 06.01.10 13:37
Bergmann89 hat folgendes geschrieben : | | achne sry, im programm kommt dann der fehler: Leinwand/Bild erlaubt kein zeichen... |
Nimm eine einfache MessageBox. ShowMessage ist nicht threadsafe, da es zur VCL gehört. Aber eine Konsole ist wohl praktischer, da man dann nicht immer alles wegklicken muss.
|
|
Flamefire
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: Mi 06.01.10 16:27
ja, wie gesagt, zum testen funktioniert es manchmal mehr oder weniger.
aber im delphi debugger wäre dann die debugmessages am besten
|
|
baka0815
      
Beiträge: 489
Erhaltene Danke: 14
Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
|
Verfasst: Mi 06.01.10 19:40
|
|