2010-09-02 28 views
3

J'appelle un composant C# COM en utilisant javascript: keystore = new ActiveXObject("RBCrypto.KeyStore");. J'ai remarqué que cette instance reste jusqu'à ce que je quitte le navigateur. Est-il de toute façon "libérer" cet objet lorsque l'utilisateur quitte la page? Actuellement, j'utilise:Libérer l'ActiveXObject de JavaScript()?

window.onunload=function() //when a user leaves the page close the keystore 
{ 
    if(keystore != null) 
    { 
     try 
     { 
      keystore.closeKeyStore(); //method in keystore 
      delete keystore; 
     } 
     catch(err) { alert(err.description); } 
    } 
} 

Mais l'objet COM est toujours présent. Des idées?

Répondre

1

Je sais qu'il est un peu tard pour répondre. "Avant fin que jamais"

Je pense que la bonne est "Application.Quit();". Toutefois, l'application de l'objet COM/OLE/ActiveX peut renvoyer null. Je ne sais pas comment retourner l'application! = Null pour exécuter le Quit();

Vous pouvez essayer ...

try 
{ 
    keystore.closeKeyStore(); 
    delete keystore; 
    keystore = null; 
    CollectGarbage(); 
} 
catch(err) 
{ 
    alert('freeing ActiveXObject via javascript'+ err.description); 
} 
+0

Mieux vaut tard que jamais en effet, merci de me le faire savoir. –

1

essayer,

keystore.Application.Quit(); 

Ce résultat est de http://www.c-point.com/javascript_tutorial/jsobjActiveXObject.htm

vous pouvez aussi essayer annulant toutes les valeurs d'objet attaché supprimer avant

for (k in elm) { 
      try { 
       elm[k] = null; 
      } 
      catch (e) { 
      } 
     } 
} 

J'ai trouvé cela aide dans le cas des objets HTML qui n'ont pas été supprimés et auxquels sont attachés divers objets.