Assembly dans deux Appdomain

Assembly dans deux Appdomain - C#/.NET managed - Programmation

Marsh Posté le 24-04-2008 à 10:40:15    

est ce que quelqu'un sait pourquoi un assembly se trouve dans deux domain differente ?
 
j'ai créé un AppDomain  
 
dim tmpAppDomain as AppDomain = AppDomain.CreateDomain("tmp" )
 
comme mes dll se trouvent dans un dossier different de la racine de l'application j'ai fait :
 
AddHandler tmpDomain.AssemblyResolve, AddressOf DomainError1
 
çà ne marche pas si on n'ajoute pas  
 
AddHandler appDomain.CurrentDomain.AssemblyResolve, AddressOf DomainError1
 
comme çà, à chaque erreur, je peux gerer et donc je met le code ci-desous dans DomainError1
 
        Dim ArgName As String = e.Name.Substring(0, e.Name.IndexOf("," ))
        dim strTempAssmbPath as string = "c:\..." & ArgName & ".dll"
        MyAssembly = Assembly.LoadFrom(strTempAssmbPath)
 
        Return MyAssembly
 
ce qui m'étonne c'est que si je place ce code directement dans une Forme et que je verifier les assemblie dans le domain courrant et le domaine Autre, on peut bien voir que les assembly que je charge dans le domain autre ne sont pas dans le domaine courrant
 
je charge avec : tmpDomain.Load(assmbName)...
 
mais lorsque je prend les codes et je crée une classe et que je les met dedans ... alors je peux voir que les assembly se trouvent dans le domaine Autre mais aussi dans le domaine courrant
 
code :
 
<Serializable()> Public Class MaClasse
 
...
private tmpDomain as appDomain
public sub New()
    tmpDomain = appDomain.CreateDomain("Autre" )
    AddHandler tmpDomain.AssemblyResolve, AddressOf DomainError1
    AddHandler appDomain.CurrentDomai.AssemblyResolve, AddressOf DomainError1
end sub
...
Private Function DomainError1(ByVal sender As Object, ByVal e As System.ResolveEventArgs) As System.Reflection.Assembly
... ' Mes traitement
end Function
...
public sub Load(byval argFileName as string)
...
   tmpDomain.Load(...)
end Sub
End Class
 

Reply

Marsh Posté le 24-04-2008 à 10:40:15   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed