AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Synchronize

Ein Thema von venice2 · begonnen am 17. Aug 2020 · letzter Beitrag vom 17. Aug 2020
Antwort Antwort
venice2
(Gast)

n/a Beiträge
 
#1

Synchronize

  Alt 17. Aug 2020, 13:00
Vielleicht eine dumme frage aber habe keinen erfolg mit Synchronize.

Ich starte in einer DLL einen Thread und möchte den mit dem MainThread aus der Anwendung synchronisieren.
Aber egal in welcher Funktion ich TThread.Synchronize(Queue) aufrufe entweder die Anwendung hängt oder aber es tut sich dann gar nichts mehr.

Also, wo muss ich den Thread synchronisieren
In der Anwendung oder der DLL.

Aber auch in der Anwendung sehe ich keine Verbesserung bzw. meine Zeichnungsroutine synchronisiert nicht mit der aus der DLL.
Was bedeutet das die Zeichnung in der Anwendung aus der DLL hängt und nur die innerhalb der Anwendung selbst wird ausgeführt.
Erst wenn ich das Anwendungsfenster anklicke Rendert das Zeichnen aus der DLL weiter.

Geändert von venice2 (17. Aug 2020 um 13:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Synchronize

  Alt 17. Aug 2020, 13:04
https://www.delphipraxis.net/165196-...g-und-dll.html

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#3

AW: Synchronize

  Alt 17. Aug 2020, 13:26
Hilft mir leider nicht weiter ich verwende SendMessage das sollte Threadsafe sein.
Eventuell liegt es am RTTI welches ich deaktiviert habe muss mal schauen.
Delphi-Quellcode:
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}

Geändert von venice2 (17. Aug 2020 um 13:29 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Synchronize

  Alt 17. Aug 2020, 14:54
Bau mal ein kleines Beispielprojekt und lade es gezippt hoch.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.110 Beiträge
 
Delphi 12 Athens
 
#5

AW: Synchronize

  Alt 17. Aug 2020, 16:02
Mit Packages arbeiten (RTLxxx.bpl)
Dann ist Application in in DLL und EXE das Selbe.


Oder man baut sich für seine DLL eine eigene Message-Loop und behandelt die Messaes, auch für das Synchronize selbst.
z.B. könnte man von der EXE (z.B. Timer, OnIdle oder so) aus das Application.ProgressMessages der DLL aufrufen.

Und ich glaub irgendwie konnte man auch selbst die Bessagebehandlugen der DLL mit denen der EXE verknubbln, aber k.A. nach was (Keyword) man da suchen muß.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#6

AW: Synchronize

  Alt 17. Aug 2020, 16:16
Danke für eure Antworten aber ich glaube BASS_RecordStart ist nicht Threadsafe von daher muss ich für das andere Fenster was zeichnen soll und es nicht tut
einen separaten Channel generieren dann geht es.

Muss mich da mal im Un4Seen Forum informieren.
Ich habe den Channel der in meiner DLL generiert wird nach außen weiter geleitet das scheint aber nicht zu funktionieren auch mit Synchronize(Queue) nicht.

EDIT:
Es lag einfach daran das die Daten zu schnell oder zu langsam übergeben wurden.
Die Verwendung des Callback DuffRecording hat das Problem beseitigt. Lag also nicht am Thread.

Geändert von venice2 (17. Aug 2020 um 19:02 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:11 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