auf "andern" Thread zugreifen

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

auf "andern" Thread zugreifen

Beitrag von AUGE_OHR »

hi,

Wenn ich ein einem Thread eine DBF öffne geschied das ja in einer
neuen WorkSpace. Wenn ich nun davon ein "Browse" habe wie kann
ich ein ":refesh..." von einem "anderen" Thread "senden" ?

gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16516
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jimmy,
mir fallen spontan zwei Dinge ein:
  • Stelle in Deinem Thread eine exported Methode zur Verfügung, die Du im Falle eines Refreshs von aussen aufrufst
  • Wirf mal einen Blick auf DbRegisterClient() - vielleicht hilft Dir das auch weiter?
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Günter Beyes
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 315
Registriert: Mo, 16. Okt 2006 13:04
Wohnort: Region Stuttgart

Beitrag von Günter Beyes »

Hallo Jimmy,

oder, wenn du in dem anderen Thread eine Referenz auf das Browser-Objekt greifbar hast:

#define xbeU_Refresh xbeP_User + 1

in Thread A:

PostAppEvent( xbeU_Refresh,,, oBrowser )

und in der Eventloop des Thread B, wo der Browser zu Hause ist:

CASE nEvent == xbeU_Refresh
oXbp:refreshAll()

Viele Grüße,
Günter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Günter Beyes hat geschrieben: #define xbeU_Refresh xbeP_User + 1
in Thread A:
PostAppEvent( xbeU_Refresh,,, oBrowser )
und in der Eventloop des Thread B, wo der Browser zu Hause ist:
CASE nEvent == xbeU_Refresh
oXbp:refreshAll()
aha ... ich muss umdenken. Nach dem Vorschlag von Martin hatte ich
eine STATIC eingesetzt und das dann in die DO WHILE eingebaut :

CASE lDoRefeshAll // STATIC
oXbp:refreshAll()

aber dein Vorschlag ist ja viel "richtiger". Also ran und das Browser Object
mit in das "Control" Array aufnehmen und in den oDlgThread:Cargo Slot
packen damit ich das Object "von aussen" steuern kann.

Danke für die "richtige" Richtung
gruss by OHR
Jimmy
Antworten