2009-12-01 9 views
3

J'utilise Interop.Domino dll version 1.2 dans l'application C#, et en utilisant multithreading pour accéder à plusieurs fichiers NSF en même temps en créant une nouvelle session pour chaque thread créé (Max 5 threads à la fois).Est-ce que Interop.Domino dll est sécuritaire?

Pour les grands fichiers NSF, l'erreur Notes ressemblait à un dépassement de segment de mémoire. Pour résoudre ce problème, j'ai utilisé Marshal.ReleaseComObject (objet) pour libérer le document Notes nécessaire et l'objet NotesView lorsque cela est possible.

Maintenant, les problèmes sont comme, je suis en mesure d'accéder à 2 fichiers NSF, mais les threads restants vont dans les exceptions dll car peu d'objets Notes obtiennent null.

me Veuillez fournir une aide ....

Merci pour l'aide.

Répondre

2

J'ai fait quelques expériences sur cette même question récemment.

J'ai écrit un programme de test qui lance deux types de threads différents. Chaque thread est configuré pour fonctionner avec 8 à 10 utilisateurs. Chaque thread doit lire l'annuaire Domino afin de localiser le fichier courrier pour les utilisateurs, et chaque thread écrit également les documents de résultats dans un seul fichier NSF commun. Mais pour le travail principal dans les fichiers courrier, deux threads n'accèdent jamais au même NSF. Les fichiers NSF sont répartis sur deux serveurs. Cinq des threads utilisent NotesDatabase.Search et cinq des threads lisent un NotesView et explorent les objets NotesViewEntry. J'ai rencontré le même problème de mémoire que vous avez rencontré, et je l'ai résolu de la même manière - mais j'ai pris soin de ne pas libérer les objets Database pour l'annuaire Domino ou la sortie NSF. J'ai exécuté ce code de test avec jusqu'à 10 threads actifs, sans aucun problème. Ceci est encourageant, mais je ne pense pas que ce soit vraiment une preuve suffisante que les objets COM Domino sont complètement thread-safe.