IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Client COM managé lance une deuxième instance d'un serveur COM déja lancé en Service.


Sujet :

C++/CLI

  1. #1
    Candidat au Club
    Inscrit en
    Août 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Client COM managé lance une deuxième instance d'un serveur COM déja lancé en Service.
    Bonjour,

    Alors j'ai :
    -un objet COM ZeObjectCOM développé en VS 6 C++,
    -un client COM ZeManagedClient développé en C#, qui appelle des méthodes de ZeObjectCOM,

    Pour lancer ZeObjectCOM à partir de ZeManagedClient, j'utilise les instructions C# suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const string COMServerID = "BatataObjects.COM.GSIServer"; 
    (...)
    Type typeofCOMServer = Type.GetTypeFromProgID(clsidCOMserver);
    COMserverObj = Activator.CreateInstance( typeofCOMServer );
    Quand j'exécute le client, il crée un objet COM. Si l'objet COM est déjà en exécution, il n'en crée pas d'autres... jusque là tout va bien !

    Les problèmes ont commencé lorsque j'ai voulu que l'objet COM, ZeObjectCOM, devienne un service Windows.

    Après quelques bidouillage je l'ai rendu un service, il démarre chaque fois que redémarre le PC, mais lorsque je lance mon client ZeManagedClient, le client ne semble pas reconnaitre l'objet COM déjà en route, et lance une deuxième exécution de l'objet COM, alors que je voudrais qu'il utilise l'objet COM déja en cours d'exécution [ce qui était le cas lorsque l'objet COM n'était pas encore un service Windows].

    Où pourrait se situer le problème ?
    -Est ce qu'il faut utiliser une autre méthode que Activator.CreateInstance ? Par exemple Activator.GetObject(...)?

    Si quelqu'un a une idée ou une piste, merci de m'éclairez !

  2. #2
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    N'est-il pas possible que ta transformation en service ait changé la manière dont ZeObjectCOM enregistre son class object au lancement?
    Pour un projet ATL, l'instrution
    _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_SINGLEUSE ); -> un seul objet lancé
    _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER, REGCLS_MULTIPLEUSE ); -> plusieurs objets lancés

    Il serait peut-etre aussi possible à ZeObjectCOM de s'enregistrer dans la ROT au lancement, ce qui permettrait à ZeManagedClient de s'y connecter sans lancer une nouvelle instance.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/02/2013, 21h57
  2. Réponses: 2
    Dernier message: 22/07/2009, 16h32
  3. Réponses: 2
    Dernier message: 13/05/2008, 17h19
  4. [VB2005]obliger windows à ouvrir une deuxième instance d'excel
    Par Gilles_37 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/10/2006, 05h23
  5. Connexion par TCP/IP impossible sur une deuxième instance
    Par sdelaunay dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 25/08/2006, 22h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo