AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) DLL und Callback-Funktion: Hostprogramm reagiert nicht?
Thema durchsuchen
Ansicht
Themen-Optionen

DLL und Callback-Funktion: Hostprogramm reagiert nicht?

Ein Thema von romber · begonnen am 28. Mai 2013 · letzter Beitrag vom 30. Mai 2013
 
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.167 Beiträge
 
Delphi 10 Seattle Professional
 
#1

DLL und Callback-Funktion: Hostprogramm reagiert nicht?

  Alt 28. Mai 2013, 22:25
Hallo!

Ich probiere es gerade mit DLLs, indem ich tesweise ein Add-On für mein Programm erstelle. In der DLL habe ich einen Thread mit dem TCP-Client, der sich mit dem Remote-Server verbindet und sehr viele Daten empfängt. Jeder Datensatz wird einer Callback-Funktion (im Hostprogramm) als Parameter übergeben. Diese Funktion wandelt dann die Daten in einem Objekt um und zeigt die Daten an. Wie gesagt, das Ganze nur zum Zwecke des Lernens.

Alles funktioniert ganz gut, solange die empfangenen Daten jeweils aus einem Datensatz bestehen und somit einzeln an die Callback-Funktion übergeben werden. Manchmal wenn der Datenaufkommen zu groß ist (oder warum auch immer) sendet der Server mehrere Datensätze auf einmal zu. In diesem Fall (um die Datenstau zu vermeiden) leitet der Client einen neuen Thread ab, der die Daten auffängt, aufteilt und einzeln der Callback-Funktion übergibt. Funktioniert auch. Das Problem tritt auf, wenn der Server mehrere "große" Datensätze hintereinander schickt und somit mehrere Threads hintereinander abgeleitet werden und sich gleichzeitig der Callback-Funktion bedienen. Dann friert das Hostprogramm plötzlich ein und reagiert nicht mehr. Es erscheint auch entsprechende Windows-Meldung, dass Programm nicht mehr reagiert.

Gibt es etwas, was ich beachten soll wenn ich
- Threads in der DLL erstelle
- die Callback-Funktion aus mehreren Threads in der DLL gleichzeitig aufrufe?

Sicherlich habe ich etwas nicht beachtet oder irgenwelche allgemeine Regel missachtet, die für soche Fälle üblich ist. Ich freue mich über jeden Hinweis.
Vielen Dank!
Angehängte Grafiken
Dateityp: png Screenshot.png (246,7 KB, 26x aufgerufen)

Geändert von romber (28. Mai 2013 um 22:31 Uhr)
  Mit Zitat antworten Zitat
 


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 19:44 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