Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » multithreading für events

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
26.10.2006, 18:05 Uhr
pitrie



hi,

ich habe gerade folgendes problem...

in einem prozess mit mehreren dlls ist immer eine aktion im gange (pol), bzw wartet es mit waitforsingleobject().
eine dll davon ist ein com-client und erwartet events von dem server.

die events kommen jedoch nie an und der com-server meckert, dass der clientprozess in benutzung ist. relativ logisch, zwecks der aktionen und dem waitforsingleobject().

wenn ich die dll mit dem com-client in eine seperate exe-anwendung packe und diese mit einer pipe oder so mit den anderen dlls verbinde, klappt alles einwandfrei und ich empfange events vom server.
ich will aber keine seperate anwendung. also was kann ich machen, dass die dll die events empfangen kann?

habe schon an einen neuen thread gedacht. jedoch weis ich nicht wie, da ich ja in einen thread nur eine funktion packen kann, aber net auf events warten kann!

ist mein problem klar? will halt die dll mit dem com-client irgendwie entkoppeln.

hat da jemand ein tip?

gruß
pitrie
--
Gruß Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.10.2006, 18:22 Uhr
Spacelord
Hoffnungsloser Fall


Wieso kannst du in nem Thread nicht auf Events warten?

Gruß Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.10.2006, 19:20 Uhr
pitrie



der ist immer in aktion ... wie gesagt wird in dem programm immer gepolt, bis er auf waitforsingleobject ist! und aa ist der thread praktisch im sleep und da kannste denke ich mal auch keine events empfangen.

der gleiche code in einer windows-applikation, wo der prozess ja nix macht und selber auf events ausm window wartet, geht alles!
--
Gruß Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de

Dieser Post wurde am 26.10.2006 um 19:21 Uhr von pitrie editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.10.2006, 19:47 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Spacelord wollte wissen warum du in einem 2. Thread nicht darauf warten kannst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.10.2006, 19:53 Uhr
pitrie



ich habe noch keinen 2. thread!

des ist ja unter anderem meine frage.

ich kann ja nur ein thread starten und damit eine bestimmte funktion in diesem thread ausführen. ich will da ja aber auf das event warten. und ich weis net, wie ich des machen soll!
--
Gruß Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
26.10.2006, 20:11 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Du würdest ja nicht nur die Eventbehandlung in den 2. Thread legen, sondern den gesammten COM Teil. Oder du legst das andere was deine Anwendung so auslastet in den 2. Thread.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
26.10.2006, 20:19 Uhr
pitrie



hmmmm...

kann ich denn die ganze dll als eigenständigen thread starten?

ich benutze ja nur die connect-funktion. aber wenn ich ja z.b. diese funktion in einem thread laufen lasse, dann ist der thread ja beendet, wenn es connected ist. das ist ja einfach eine klasse, die den handler hat.

kann ich jetzt z.b. eine komplette klasse in einen neuen thread stecken?
mit threads kenne ich mich mal garnet aus :-(
--
Gruß Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.10.2006, 20:41 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wenn du einen Thread startet musst du eine Funktion angeben. Diese Funktion wird dann parallel zu deinem Haupthread (Prozess) abgearbeitet. Alles was von dieser Threadfunktion aus aufgerufen wird läuft also auch innerhalb des 2. Threads ab.


Vielleicht solltest du mal genauer erklären was du machst bzw was das für Events von deinem Com Server sind bzw was für ein ComServer das ist usw.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.10.2006, 20:59 Uhr
pitrie



so habe ich mir das gedacht und deswegen hänge ich hier an der stelle.

also die dll A will daten und pollt die ganze zeit.
dazu habe ich die dll B geschrieben, die eine verbindung zu dem com-server aufbaut. (über die atl usw.) dann registriere ich meine events und übergebe bei der registrierung meine funktion z.B. onDaten(). darin werden dann dinge abgehandelt und der dll A über einer pipe übergeben.
weiter macht die dll B eigentlich nichts ... nur mit dem com-server verbinden und dann auf das event warten und in die pipe legen.

ich will jetzt, dass die funktion onDaten() das event empfangen kann. wozu es ja net kommt, da die dll immer gepollt wird bzw. an einer stelle auf waitforsingleobject wartet.

mit dem com-server habe ich eigentlich wenig zu tun. verbinde mich nur als client mit ihm.

so einigermaßen mein problem gut rübergekommen?
--
Gruß Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.10.2006, 10:39 Uhr
RHBaum



der com server ist der von dir ?
welches Appartmentmodel nutzt der ?

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: