2009-03-16 6 views
3

Je dois encapsuler une application VB6 en tant qu'objet COM qui sera appelé par IIS. L'une des DLL utilisées par l'application VB6 n'est PAS thread-safe.Exécution d'une DLL non thread-safe dans un serveur HTTP multithread Windows

Comment puis-je m'assurer que lorsque mon objet COM est appelé, il ne partage pas la même DLL avec d'autres instances de lui-même?

J'ai lu quelque part que les exe ActiveX exécutent chaque instance dans un processus différent, cela serait-il suffisant?

Répondre

1

Vous allez avoir besoin de lire sur les modèles de filetage COM et appartement, link text. Alors que ce que vous faites est possible, votre performance va être horrible parce que vous finirez par utiliser des appartements à un seul thread, donc toutes les demandes seront sérialisées. Vous devriez vraiment étudier la création d'un processus distinct pour chacune de ces demandes.

+0

Je pensais que c'est exactement ce qu'un ActiveX exe ferait: créer un nouveau processus pour chaque appel. Est-ce incorrect? – cfischer

+0

Je n'ai traité que des objets COM en tant que DLL, mais d'un coup d'œil au MSDN, il peut être possible d'utiliser un exécutable ActiveX hors processus pour ce faire. Plutôt que d'essayer de porter l'application de trou, vous devez créer une petite application de test. – LanceSc

Questions connexes