我正在开发一个 CF9 应用程序,我们有一个有时需要调用的过程applicationStop()
我对这个功能的理解是它会关闭应用程序,并在下次请求时重新启动应用程序。
我正在使用它来重新加载一些应用程序范围的变量和第三方的东西,但是,看起来好像在函数完成处理onApplicationStart()
之前调用了函数。onApplicationEnd()
谁能确认这是否是该功能的预期applicationStop()
功能?它给我造成的问题是,onApplicationEnd()
我正在重置一些我想重新初始化的应用程序范围的东西onApplicationStart()
,但是如果它不等到onApplicationEnd()
完成,那么我就会进入不一致的状态。
编辑 问题最初实际上更多是关于在 onApplicationEnd() 仍在执行时调用 onApplicationStart() 是否是预期行为,我打算通过在 onApplicationEnd() 中使用锁定来解决我的问题以确保它完成了重新加载。
但是,我添加了一个锁:
lock scope="application" type="exlusive" timeout="5" {
而且它似乎忽略了整个块 - 没有执行任何代码(包括日志记录),也没有引发异常(如果在执行之前锁定超时,则会引发异常?)。我认为这与我们在 onApplicationEnd() 中并没有完整的应用程序范围有关吗?