2009-03-16 5 views
3

Ich muss eine VB6-Anwendung als COM-Objekt kapseln, das von IIS aufgerufen wird. Eine der DLLs, die von der VB6-App verwendet werden, ist NICHT Thread-sicher.Ausführen einer nicht threadsicheren DLL in einem Multithreading-Windows-HTTP-Server

Wie kann ich sicherstellen, dass, wenn mein COM-Objekt aufgerufen wird es nicht die gleiche DLL mit anderen Instanzen von sich teilen?

Ich habe irgendwo gelesen, dass ActiveX exes jede Instanz in einem anderen Prozess ausführen, wäre das genug?

Antwort

1

Sie müssen sich über COM- und Apartment-Threading-Modelle informieren, link text. Während das, was Sie tun, möglich ist, wird Ihre Leistung schrecklich sein, weil Sie am Ende Single-Threaded-Apartments verwenden werden, so dass alle Anfragen serialisiert werden. Sie sollten wirklich untersuchen, einen separaten Prozess für jede dieser Anforderungen zu erstellen.

+0

Ich dachte, das ist genau das, was eine ActiveX-Exe tun würde: Erstellen Sie einen neuen Prozess für jeden Anruf. Ist das falsch? – cfischer

+0

Ich habe nur mit COM-Objekten als DLLs behandelt, aber aus einem kurzen Blick auf die MSDN kann es möglich sein, eine Out-of-Process ActiveX-Programmdatei zu verwenden, um dies zu tun. Anstatt zu versuchen, die Anwendung zu portieren, sollten Sie eine kleine Testanwendung erstellen. – LanceSc