Question
afficher popup et continuer script directement
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 13 ans 1 mois #14016
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:afficher popup et continuer script directement
JayG écrit:
JayG écrit:
Ce qu'on ne connait pas, parait souvent 'complexe', au début.
Voici du code qu'on peut commencer à classer dans la catégorie 'complexe' :
[code:1]
function AddMethodPSDispose{
param ($ZipInstance)
$Logger.Debug(\"Add PSDispose method on $($ZipInstance.Name)\"«») #<%REMOVE%>
Add-Member -Inputobject $ZipInstance -Force ScriptMethod PSDispose{
if (($this.StatusMessageTextWriter -ne $null) -and ($this.StatusMessageTextWriter -is [PSIonicTools.PSVerboseTextWriter]))
{
#On libère que ce que l'on crée
Write-Debug(\"`t ZipFile Dispose PSStream\"«») #<%REMOVE%>
$this.StatusMessageTextWriter.Dispose()
$this.StatusMessageTextWriter=$null
}
#Récupère le type de l'instance
$MyType=$this.GetType()
#Récupère l'événement ZipError
$Event=$MyType.GetEvent('ZipError')
#Un event à un délégué privé
$bindingFlags = [Reflection.BindingFlags]\"GetField,NonPublic,Instance\"
#On récupère la valeur du délégué privé
$EventField = $MyType.GetField('ZipError',$bindingFlags)
$ZipErrorDeleguate=$EventField.GetValue($this)
if ($ZipErrorDeleguate -ne $null)
{
Write-Debug(\"`t Dispose delegates\"«») #<%REMOVE%>
#Récupère la liste des 'méthodes' à appeler
# Au moins un, peut être de notre type : $_.Target -is [PSIonicTools.PSZipError]
$ZipErrorDeleguate.GetInvocationList()|
Foreach {
Write-Debug(\"`t Dispose $_\"«») #<%REMOVE%>
#On supprime tous les abonnements
$Event.RemoveEventHandler($this,$_)
}
}
#On appelle la méthode Dispose() de l'instance en cours
$this.Dispose()
}
} #AddMethodPSDispose
[/code:1]
Et encore, c'est plus facile à lire qu'a écrire
Mais surtout, ce qu'on ne connait pas, parait souvent 'complexe', au début...<br><br>Message édité par: Laurent Dardenne, à: 19/02/13 19:31
PS n'est pas fait pour ça, qu'on se le dise.Pour fermer la fenêtre ça n'a pas l'air si simple (même en utilisant un -Force)
JayG écrit:
Il ne s'agit que d'affection et de la config d'event.même si le code est ma foi assez complexe
Ce qu'on ne connait pas, parait souvent 'complexe', au début.
Voici du code qu'on peut commencer à classer dans la catégorie 'complexe' :
[code:1]
function AddMethodPSDispose{
param ($ZipInstance)
$Logger.Debug(\"Add PSDispose method on $($ZipInstance.Name)\"«») #<%REMOVE%>
Add-Member -Inputobject $ZipInstance -Force ScriptMethod PSDispose{
if (($this.StatusMessageTextWriter -ne $null) -and ($this.StatusMessageTextWriter -is [PSIonicTools.PSVerboseTextWriter]))
{
#On libère que ce que l'on crée
Write-Debug(\"`t ZipFile Dispose PSStream\"«») #<%REMOVE%>
$this.StatusMessageTextWriter.Dispose()
$this.StatusMessageTextWriter=$null
}
#Récupère le type de l'instance
$MyType=$this.GetType()
#Récupère l'événement ZipError
$Event=$MyType.GetEvent('ZipError')
#Un event à un délégué privé
$bindingFlags = [Reflection.BindingFlags]\"GetField,NonPublic,Instance\"
#On récupère la valeur du délégué privé
$EventField = $MyType.GetField('ZipError',$bindingFlags)
$ZipErrorDeleguate=$EventField.GetValue($this)
if ($ZipErrorDeleguate -ne $null)
{
Write-Debug(\"`t Dispose delegates\"«») #<%REMOVE%>
#Récupère la liste des 'méthodes' à appeler
# Au moins un, peut être de notre type : $_.Target -is [PSIonicTools.PSZipError]
$ZipErrorDeleguate.GetInvocationList()|
Foreach {
Write-Debug(\"`t Dispose $_\"«») #<%REMOVE%>
#On supprime tous les abonnements
$Event.RemoveEventHandler($this,$_)
}
}
#On appelle la méthode Dispose() de l'instance en cours
$this.Dispose()
}
} #AddMethodPSDispose
[/code:1]
Et encore, c'est plus facile à lire qu'a écrire
Mais surtout, ce qu'on ne connait pas, parait souvent 'complexe', au début...<br><br>Message édité par: Laurent Dardenne, à: 19/02/13 19:31
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- afficher popup et continuer script directement