AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi COM-Objekte innerhalb von Threads
Thema durchsuchen
Ansicht
Themen-Optionen

COM-Objekte innerhalb von Threads

Ein Thema von CalganX · begonnen am 10. Apr 2007 · letzter Beitrag vom 11. Apr 2007
Antwort Antwort
Seite 2 von 2     12   
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

Re: COM-Objekte innerhalb von Threads

  Alt 11. Apr 2007, 18:36
Ich würde das Interface für iTunes nur einmal erzeugen und zwar im Hauptthread.
Dann gibt man das Interface beim Erzeugen des Thread-Objekts "einfach" weiter.
Wenn 5 Threads das Interface benützen, dann steht RefCount auf 6 (5 Thread + die Referenz im Hauptthread).

Wenn Interface-Pointer von einem Thread an einen anderen Thread weitergereicht werden soll,
dann muss man Marshaling anwenden.
siehe: http://www.techvanguards.com/com/tut...s%20apartments
Andreas
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: COM-Objekte innerhalb von Threads

  Alt 11. Apr 2007, 18:50
Hi shmia,
wie soll denn der Pointer weitergegeben werden? Reicht ein einfaches zuweisen, wie ich es oben schon probiert habe? Das Marshalling versuche ich nachher.

Danke,
Chris
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#13

Re: COM-Objekte innerhalb von Threads

  Alt 11. Apr 2007, 19:15
Zitat von CalganX:
Das Marshalling versuche ich nachher.
Ohne Marshaling geht es nicht! Andernfalls erscheint der Fehler: "The application called an interface that was marshaled for a different thread"
Auf der obigen Webseite werden 2 Techniken gezeigt; die 2. Technik mit dem Hilfs-Interface IGlobalInterfaceTable
ist für deinen Zweck am Besten.
Andreas
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: COM-Objekte innerhalb von Threads

  Alt 11. Apr 2007, 20:59
Hi shmia,
ja, die Fehlermeldung hatte ich zwischen durch auch mal, aber wie gesagt, kommt jetzt im Moment der Fehler ja in erster Linie bei CoiTunesApp.Create und das passiert ja vor dem marshalen, oder?

Chris
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: COM-Objekte innerhalb von Threads

  Alt 11. Apr 2007, 21:29
Hi,
hab es jetzt auch so implementiert, wie es auf der Seite gezeigt wird. Der Fehler beim Erzeugen ist immer noch da. Und wie gesagt nehme ich an, dass iTunes es nicht mag, wenn man es über Dienste ansteuert.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#16

Re: COM-Objekte innerhalb von Threads

  Alt 11. Apr 2007, 21:39
Falls es nur am fehlenden Fenster liegt, kannst Du Dir ja ein unsichtbares Fenster mittels AllocateHwnd holen (das musst Du aber auch mit UnAllocateHwnd wieder freigeben!), nen Test kann ja nicht schaden.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: COM-Objekte innerhalb von Threads

  Alt 11. Apr 2007, 21:46
Und was soll ich mit dem Fenster machen? Woher will iTunes denn wissen, ob ich ein Fenster habe oder nicht? Es wird nirgendwo ein Parameter gefordert, der so einen Schluss zulassen würde.

Chris

Edit: Einfach so ein Handle zu erzeugen, hilft aber nicht.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#18

Re: COM-Objekte innerhalb von Threads

  Alt 11. Apr 2007, 21:50
iTunes könnte z.B. sich das Top Level Window des Callers holen wollen (wozu auch immer, seitdem ich Entwicklerfeuerwehr spiel, halte ich keine Idee mehr für unmöglich *g*), dazu musst Du keinen Parameter übergeben.

Edit: Na jut, dann hat sich das wohl erledigt. Naja, ist nicht das erste Mal dass iTunes für graue Haare sorgt
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 20:34 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