2009-07-15 8 views
3

Lors de l'utilisation de P/Invoke, l'ajout de [SuppressUnmanagedCodeSecurity] peut accélérer les appels du code managé en code non managé dans les scénarios approuvés.Comment définir SuppressUnmanagedCodeSecurity pour les rappels?

Existe-t-il un moyen d'effectuer la même chose dans le sens inverse, pour accélérer les choses lorsque j'appelle du code non managé en code managé? Le profilage montre des frais généraux beaucoup plus élevés dans cette direction dans notre application.

Répondre

0

Je ne crois pas qu'il y ait un tel contrôle de sécurité de non géré dans géré.

Vous pouvez voir les contrôles de sécurité comptés au fur et à mesure qu'ils se produisent si vous allez dans Process Explorer. Trouvez votre processus, cliquez sur Propriétés, allez dans l'onglet .NET et sélectionnez "Sécurité .NET CLR" dans le menu déroulant.

J'ai écrit une application de test simple qui appelle simplement du code non géré, en passant un délégué, puis le code non géré appelle immédiatement cette délégation. Une vérification de sécurité a été effectuée pour chaque appel dans ma boucle de test.

Puis j'ajouté [SuppressUnmanagedCodeSecurityAttribute()] au Managed ---> Appel et non géré les contrôles de sécurité sont allés à 0.

+0

Mais je vais avoir un problème similaire avec la vitesse de rappel alors laissez-moi savoir si vous » J'ai appris quelque chose d'utile. –

Questions connexes