问题标签 [application-shutdown]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 受控的应用程序关闭策略
我们的(Windows 原生 C++)应用程序由线程对象和管理器组成。它写得非常好,其设计可以看到 Manager 对象控制其 minions 的生命周期。各种对象调度和接收事件;有些事件来自 Windows,有些是自产的。
一般来说,我们必须非常了解线程互操作性,因此我们使用手动同步技术,使用 Win32 临界区、信号量等。但是,有时由于事件处理程序重新进入等原因,我们在关闭期间会遇到线程死锁。
现在我想知道是否有一个像样的应用程序关闭策略,我们可以实施以使其更容易开发 - 比如每个对象从中央控制器注册关闭事件并相应地改变其执行行为?这是否太天真或脆弱?
我更喜欢不规定重写整个应用程序以使用 Microsoft 的并行模式库或类似的策略。;-)
谢谢。
编辑:
我想我正在寻求一种方法来控制复杂应用程序中的对象生命周期,其中许多线程和事件一直在触发。Giovanni 的建议是显而易见的(我们自己动手),但我相信必须有各种现成的策略或框架,以便以正确的顺序干净地关闭活动对象。例如,如果您想将您的 C++ 应用程序基于 IoC 范例,您可能会使用 PocoCapsule 而不是尝试开发自己的容器。在应用程序中控制对象生命周期是否有类似的东西?
android - setOnClickListener - 应用程序意外停止
一旦我在代码中使用 setOnClickListener 作为按钮,当我启动应用程序时,它会说the application has stopped unexpectedly
这是我的主页的代码:
main.xml 看起来像这样:
wpf - Application.Current.Shutdown(-1) 不关闭 WPF 应用程序
我正在检查 Windows 身份验证用户是否是我的 wpf 应用程序的有效用户。
如果没有,我需要关闭应用程序;但即使在执行 Application.Current.Shutdown(-1) 之后,应用程序也会继续愉快地执行。
下面的链接说我需要删除我的 StartUpURI;但我的 app.xaml 中没有那个标签。->从 App.xaml.cs 关闭 WPF 应用程序
编辑:- 我在 APP.XAML.CS 中有此代码->
iphone - 应用程序关闭后如何保存变量?
我想在应用程序关闭后保存一些整数并在应用程序打开后恢复它们,最简单的方法是什么?
delphi - 如何找出哪些代码调用了已卸载的模块?
我遇到了典型的访问冲突:
这发生在当程序的其余部分已经关闭时创建的线程中。
发生异常时主线程正在运行System.FinalizeUnits
。
我发现该地址属于gdiplus.dll
已加载的内存区域。
如果我添加LoadLibrary('gdiplus.dll')
对 dpr 文件的调用而不调用FreeLibrary
返回的句柄,问题就会消失,这样在gdiplus.dll
运行终结部分时不会卸载。
如何找出程序的哪个部分创建了导致访问冲突的线程?
有没有办法识别调用释放内存空间的代码?
FastMM 和 madExcept 帮助不大,出现了 madExcept 错误报告窗口,但又立即关闭,不写入日志文件。
我可以将程序拆开,但它是一个不平凡的应用程序,我宁愿使用某种调试技术来解决这个问题。
c# - 如何订阅类库中的应用程序关闭事件
某些应用程序使用了一个类库。它包含一个用于外部使用的类 A,以及库内另一个私有类 B 的静态字段。用户应用程序使用库中的 A 类实例。
当应用程序关闭时,我想在 B 类中进行一些清理。是否可以在 B 类中捕获应用程序关闭事件而无需用户应用程序的任何操作?
java - contextDestroyed() 与 addShutdownHook()
我目前正在实施ServletContextListener
并使用contextDestroyed()
它在我的 Web 应用程序关闭之前运行它的清理任务。但是,我一直在阅读有关如何Runtime.addShutdownHook(Thread)
将其用于相同目的的信息。
这两种在取消部署之前运行清理的方法有什么区别吗?就功能、效率和可维护性而言,哪个更适合 Web 应用程序?
java - java应用服务器实例突然关闭的可能原因
鉴于我是开发人员,并且应用服务器的知识仅限于部署、声明/映射资源等基础知识。
我的第一步是调查应用程序和服务器日志(sysout 和 syserr)以找到任何线索并查看服务器实例在关闭之前所做的最后一件事。例如,对于本地部署的 Tomcat,如果它可能由于内存问题而突然关闭,您将看到与 PermGen 相关的堆栈跟踪。
我的问题是,如果在关闭之前没有任何迹象表明日志中出现问题,我该去哪里?我还应该研究哪些其他地方,这种突然关闭的可能原因是什么?
就我而言,这是一个 WAS 6.1,其中有多个实例,其中只有 1 个实例死亡。这个死掉的实例有几个应用程序,不超过 5 个。
delphi - 是否有保证在应用程序终止但在任何表单被销毁之前调用的 Delphi 事件?
我正在使用德尔福 6 Pro。我需要一个在我的应用程序肯定关闭但在任何表单被销毁之前触发的事件。我曾考虑在主窗体 WndProc() 中捕获 WM_QUIT 消息,但这不起作用,因为在我看到 WM_QUIT 消息之前窗体开始破坏。我想知道在关闭事件链的这一点上是否有一个标准的 Delphi 事件可以用来执行代码?我不能使用主窗体的 FormClose() 事件,因为它不能保证触发,而且 FormDestroy() 事件为时已晚。有任何想法吗?
java - 不合规 JVM 不发送 WindowClosing 事件的解决方法
各种 OS X 版本上的 Apple JVM 显然已被破坏,因为它们不会在应该生成 WindowClosing 事件时(例如,如果您通过单击关闭按钮关闭应用程序的主 JFrame)。
(在最近的 Apple Java 更新中,您可以设置一个属性来强制生成事件,但这不是我想要的)
我的问题很简单:我想在用户关闭应用程序时显示“提示”。但是我不能(由于没有生成事件)检测到用户关闭了窗口。
所以我想我可以使用关闭钩子:
然而,显然从关闭挂钩创建 JFrame 似乎有问题:就像一旦调用关闭挂钩,EDT 就已经消失了。
我尝试了几件事,但似乎没有什么真正有意义:就像我的“提示”JFrame 保持灰色(尽管从任何地方调用它时它工作正常,但关闭挂钩)或程序立即退出。我尝试使用闩锁并等待关闭挂钩的闩锁,但就好像 EDT 不再存在一样。
我目前正在认真考虑生成第二个 Java 应用程序只是为了将工具提示显示为一种解决方法,但我认为这有点矫枉过正(但至少它会起作用)。
有没有人尝试过从关闭挂钩创建一个窗口并在 EDT 上调用一些东西,并且有什么需要注意的问题吗?(请记住,由于已知的长期存在的 Apple VM 错误,我无法可靠地捕获 OS X 上的窗口关闭事件)。