Sur .NET Rocks! Show 561, Carl et Richard ont parlé de libérer des objets non gérés instanciés dans du code managé. Si vous devez libérer un objet COM qui est instancié dans le code managé .NET, vous devez appeler System.Runtime.InteropServices.Marshall.ReleaseComObject
. Existe-t-il quelque chose de similaire que vous devez faire (ou devriez faire) lors de la publication d'objets .NET à partir du code COM, ou est-ce suffisant de s'appuyer sur le Garbage Collector pour libérer les objets?Publication d'objets .NET à partir du code VB6
3
A
Répondre
4
Tant que vous gérez le nombre de ref du COM Callable Wrapper comme vous le faites pour n'importe quel autre objet COM (set netObj = Nothing
) COM et .NET se chargeront du reste.
3
Je voudrais également ajouter que si vous utilisez des événements de VB6, vous voudrez ajouter une fonction dans votre code DotNet pour libérer l'événement. .: par exemple
class SomeEventClass
{
public event EventHandler SomeEvent;
public void DoSomething()
{
var someEvent = SomeEvent;
if (someEvent != null)
{
someEvent(this, new EventHandlerArgs());
}
}
public void ReleaseFromEvents()
{
SomeEvent = null;
}
}
Cela est nécessaire car parfois l'événement ne sera pas autorisé à null lorsque l'objet VB6 est détruit. Quelque chose a appris à la dure ...
Questions connexes
- 1. Comment lire un message MSMQ à partir d'une application VB6 à l'aide du code .NET?
- 2. Utilisation d'assemblages C# à partir du code VB6. Quelques problèmes
- 3. compiler le code VB6 dans l'environnement .NET
- 4. .net publication
- 5. Appel d'une méthode VB6 à partir d'une DLL .NET
- 6. Comment obtenir l'adresse IP à partir du code .Net
- 7. Modifier le volume sonore à partir du code .net
- 8. L'appel du code FoxPro à partir de .Net
- 9. Construire des DLL .NET à partir du code Python?
- 10. Lancer les rapports Reporting Services à partir du code .Net
- 11. Appelez Babel .Net Obfuscator à partir du code C#
- 12. ASP.NET - Est-il possible de déclencher une publication à partir du code du serveur?
- 13. asp/vb6 à .net 2.0 - aide
- 14. VB6 variante type à l'autre .NET
- 15. VB6 à C# que signifie ce code VB6?
- 16. AuthenticationService accédant à partir du code derrière
- 17. Appel d'un rappel natif à partir du code .NET géré (lors du chargement du code managé à l'aide de COM)
- 18. Problème Unicode Net, héritage vb6
- 19. ASP.NET - Publication de pages croisées à partir du contrôle personnalisé
- 20. Publication du code html en PHP à l'aide de jQuery
- 21. Force Postback du code derrière? Ou recharger JavaScript à partir d'une publication asynchrone?
- 22. Obtention des options de configuration régionales à partir du code
- 23. Besoin d'écrire du code C à partir du code C++?
- 24. VB6 à C# ligne de code
- 25. Lire à partir du réseau problème .NET
- 26. Publication asynchrone du feu à partir de jquery
- 27. Besoin d'aide pour déchiffrer une ligne de code assembleur, à partir du code .NET JITted
- 28. Utiliser COM .NET en vb6
- 29. L'utilisation de .NET BackgroundWorker à partir de VB6 échoue avec une exception AccessViolationException
- 30. DLL .Net COM ne fonctionne pas à partir vb6 à travers appdomains
+1. Je mentionnerai simplement que vous n'avez souvent pas besoin de faire quoi que ce soit. Si 'netObj' est une variable locale, le runtime VB6 le relâchera immédiatement à la fin de la routine. Vous avez seulement besoin de 'Set netObj = Nothing' si' netObj' est une variable de niveau module ou globale. – MarkJ