61 .net c# multithreading appdomain
这是我最初的问题的后续内容,我想提出我的发现并要求更正,想法和见解.我的发现(或者更确切地说是解释)来自人们对我之前的问题的回答,阅读MSDN .NET 3.5文档和调试.NET 3.5代码.我希望这对那些想知道如何检测应用程序何时终止的人有价值.
事件:
System.AppDomain.CurrentDomain.ProcessExit
:当进程退出时引发,例如在默认情况下AppDomain
并且其他所有内容都被卸载[总执行时间仅限于3秒!].对于WPF,请System.Windows.Application.Exit
改用.对于Windows窗体,请Application.Run(...)
在main方法之后运行代码.
System.AppDomain.CurrentDomain.DomainUnload
:当AppDomain
默认AppDomain
卸载以外时引发,例如在运行带有单元测试框架的类时(带有TestDriven.NET的MbUnit).
System.AppDomain.CurrentDomain.UnhandledException
:(如果在默认情况下处理AppDomain
:)为任何线程中的任何未处理的异常引发,无论AppDomain
线程是什么开始.这意味着,这可以用作所有未处理异常的catch-all.
System.Windows.Application.Exit
:当WPF应用程序(即默认值AppDomain
)正常退出时引发.覆盖System.Windows.Application.OnExit
以利用它.
终结器(C#中的析构函数):当垃圾收集器释放非托管资源时运行.[总执行时间有限!].
活动顺序:
WPF应用程序:优雅退出
System.Windows.Application.Exit
System.AppDomain.CurrentDomain.ProcessExit
WPF应用程序:未处理的异常
System.AppDomain.CurrentDomain.UnhandledException
在TestDriven.NET中运行的MbUnit:通过测试(优雅退出)
System.AppDomain.CurrentDomain.DomainUnload
在TestDriven.NET中运行的MbUnit:测试失败(未处理的异常由MbUnit处理)
AppDomain.CurrentDomain.DomainUnload
问题:
归档时间: |
|
查看次数: |
15326 次 |
最近记录: |