是否有一个卸载事件,或者任何事件,通知,消息,机制或挂钩,可以用来在“默认”应用程序域卸载之前得到通知?
我有一些代码需要知道应用程序域(几乎总是默认域)何时结束。
注意:我不知道开发人员在使用我的代码时将创建什么样的应用程序。它可能是:
无论哪种方式,我都需要知道域关闭的时间,以便我可以执行一些“工作”。而且我不会要求用户调用任何形式的“关闭”或“清理”方法。(此外,建议要求用户自己调用方法并不能回答问题:这是有关在我正在运行的应用程序域关闭时收到通知的)。
我忘记了我对这个问题的其他细微改动后的回答。最终,答案来自MA Hanin的答案。
没有DomainUnload,但是有ProcessExit:
class Contoso
{
//constructor
public Contoso()
{
//...
//Catch domain shutdown (Hack: frantically look for things we can catch)
if (AppDomain.CurrentDomain.IsDefaultAppDomain())
AppDomain.CurrentDomain.ProcessExit += MyTerminationHandler;
else
AppDomain.CurrentDomain.DomainUnload += MyTerminationHandler;
}
private void MyTerminationHandler(object sender, EventArgs e)
{
//The domain is dying. Serialize out our values
this.Dispose();
}
...
}
Run Code Online (Sandbox Code Playgroud)
注意:任何代码都会发布到公共领域。无需注明出处。
| 归档时间: |
|
| 查看次数: |
3501 次 |
| 最近记录: |