2010-01-22 9 views
0

Actuellement, je vérifie le nom de méthode dans la méthode OnMethodBoundaryAspect.OnExit:Comment exécuter un bloc de code avec PostSharp lorsque l'application se termine?

[Serializable] 
public class TimerAttribute : OnMethodBoundaryAspect 
{ 
    public override void OnExit(MethodExecutionEventArgs eventArgs) 
    { 
     if(eventArgs.Method.DeclaringType.Name == "Program" && eventArgs.Method.Name == "Main") 
      //do things 
    } 
} 

De toute évidence, ce qui est laid et se sent kludgy. Existe-t-il une méthode plus robuste pour détecter l'exit d'application avec PostSharp?

Répondre

2

Je ne pense pas que vous devriez utiliser PostSharp pour le faire.

Vous pouvez détecter si le domaine d'application est sortie en utilisant certaines fonctionnalités de System.AppDomain:

  • AppDomain.IsFinalizingForUnload()
  • AppDomain.ProcessExit
  • AppDomain.DomainUnload
+0

C'est certainement vrai;) –

+0

Je voudrais implémenter ceci d'une manière orientée aspect. –