2009-02-04 9 views
0

J'ai créé un logiciel qui charge le module externe créé par les clients.Un thread non géré s'exécutant Code managé

Ce logiciel est censé être HA (haute disponibilité), ce qui signifie qu'il ne peut pas être autorisé à planter. Pour cela, j'ai créé une classe qui crée un thread, exécute la fonction du module client, et retourne. La classe permet un certain temps pour exécuter la fonction, et si elle prend trop de temps, elle tue le fil. Comme ceci, si le client a foiré son module en ayant une boucle infinie ou quoi que ce soit dans son code, le reste du système ne gèle pas. Maintenant, la question que j'ai ... Si le thread qui exécute la fonction est créé en code non managé (C++) et que la fonction du module qui y est exécutée est du code managé, quel genre de problème pourrais-je avoir en supprimant le thread?

Merci,

Répondre

3

En général, il est dangereux de tuer un fil dans un processus en cours d'exécution; Voir les avertissements et les notes au TerminateThread. Si je faisais une telle application, je serais enclin à étudier les moyens d'héberger le module tiers dans un processus séparé avec une interface de communication bien définie; Par exemple: dans une application COM +. Cela vous permettrait de tuer le processus entier s'il devient "hors de contrôle", sans affecter la stabilité du processus "hôte".

Questions connexes