问题标签 [termination]

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.

0 投票
5 回答
2455 浏览

iphone - 由于未捕获的异常而终止应用程序 // SIGABRT // C++

0 投票
3 回答
3153 浏览

c# - 多线程 - 程序结束时的清理策略

以干净的方式完成多线程应用程序的最佳方法是什么?
我正在从单独的套接字中的主线程开始几个套接字连接,并在主线程中等到我的工作日结束,并使用当前System.Environment.Exit(0)来终止它。

这导致其中一个孩子出现未处理的异常。我应该停止列表中的线程吗?我一直不愿意在孩子身上实施任何真正的停止,因此我想知道最佳实践。套接字都用适当的析构函数很好地包装了注销和关闭,但它仍然会导致错误。

0 投票
1 回答
42603 浏览

c++ - C++ TerminateProcess 函数

我一直在搜索 Win32 API C++ 函数TerminateProcess()的示例,但找不到任何示例。

我一般对 Win32 API 不是很熟悉,所以我想问一下这里比我更好的人是否可以给我举个例子,

  • 通过终止进程所需的 PID 检索进程句柄,然后使用它调用 TerminateProcess。

如果您不熟悉 C++,那么 C# 等价物也会有所帮助。

0 投票
4 回答
1606 浏览

java - 如何以安全的方式关闭我的软件?

到目前为止,我将我的应用程序用作独立产品。所以,当用户按下“停止”按钮时,我打了电话System.exit(0);,这很好。

现在我的应用程序将被另一个程序调用(以编程方式)。所以,我担心这System.exit(0);不仅会杀死我的进程,还会杀死启动我的程序的外部软件。

那么,如果收到来自外部软件的相应请求,关闭我的应用程序的正确方法是什么?我的应用程序是一个 GUI 应用程序。所以,我想关闭窗口,但我也想关闭我的程序执行的所有进程。

添加:

更具体地说,我想关闭我的程序启动的所有线程。我的程序不会启动任何操作系统进程或任何其他程序。

0 投票
3 回答
534 浏览

c# - 应用程序不会以 0 个线程退出

我们有一个 WinForms 桌面应用程序,它是多线程的。3 个线程与 Application.Run 和一堆其他后台工作线程一起运行。让所有线程正确关闭有点棘手,但我想我终于做对了。

但是当我们实际部署应用程序时,用户开始体验到应用程序不退出。有一个 System.Threading.Mutex 可以防止他们多次运行应用程序,因此他们必须进入任务管理器并杀死旧的,然后才能再次运行它。

在主线程退出之前,每个线程都会获得一个 Thread.Join,并且我将日志记录添加到我生成的每个线程中。根据日志,每一个启动的单线程也退出,主线程也退出。更奇怪的是,运行 SysInternals ProcessExplorer 显示应用程序退出时所有线程都消失了。如,有 0 个线程(托管或非托管),但进程仍在运行。

我无法在任何开发人员的计算机或我们的测试环境中重现这种情况,到目前为止,我只在 Windows XP(不是 Vista 或 Windows 7 或任何 Windows Server)上看到过这种情况。一个进程如何以 0 个线程继续运行?

编辑:

这里有更多细节。事件循环之一是托管 Win32 互操作 DLL,它使用 COM 对象与设备驱动程序对话。我将它放在自己的线程中,因为设备驱动程序对时间敏感,并且每当 UI 线程会阻塞很长时间(例如等待数据库调用完成)时,它都会干扰设备驱动程序。

所以我更改了代码,因此主线程将使用设备驱动程序线程执行 Thread.Join。这实际上导致应用程序锁定......它在加入完成后在 UI 线程上记录了更多调用,然后一切都停止了。如果设备断电,驱动程序永远不会启动,问题就会消失。所以看起来驱动程序必须负责保持应用程序的活动,即使在它应该被关闭之后也是如此。

0 投票
1 回答
1487 浏览

c# - C# Abort()ing 线程退出窗体

到目前为止,我在单击 X 按钮时运行了此代码,但我不确定这是否是在退出时终止窗体上的线程的正确方法。

我不断收到此错误:“已尝试释放正在使用的 RCW。RCW 正在活动线程或其他线程上使用。尝试释放正在使用的 RCW 可能会导致损坏或数据丢失。”

0 投票
1 回答
274 浏览

javascript - 浏览器进程被杀死时如何运行javascript?

我在我的 html 正文标记中定义了 onUnload="cleanup()" 。javascript中的cleanup()方法是

函数 cleanup() {--清理会话--}。

但是,当浏览器通过使用任务管理器终止进程而终止时,我想做与清理相同的操作。如何才能做到这一点?

0 投票
1 回答
691 浏览

cocoa - 在可可应用中观察其他应用退出或突然终止

我需要在应用程序周围创建包装器,所以我创建了一个小的可可应用程序,它打开应用程序[[NSWorkspace sharedWorkspace] launchApplication:…],我可以在该应用程序退出或终止时注册一些事件(如果应用程序以好的或坏的方式完成,我当然需要获取事件)。我知道我可以询问这样的应用程序是否每秒都在运行,但我希望有更好的方法。

0 投票
5 回答
26114 浏览

c# - 当父进程在C#中终止时如何终止子进程

任务:如果父进程终止,则自动终止所有子进程。例如,不仅可以以正确的方式终止父进程,还可以通过在 ProcessExplorer 中终止父进程。我该怎么做?

С 主题建议中使用 Job 对象的类似问题。如何在 C# 中使用它而不导出外部 DLL?


我尝试使用作业对象。但是这段代码不能正常工作:

PInvoke.SetInformationJobObject 返回错误。GetLastError 返回错误 24。但是,PInvoke.AssignProcessToJobObject 工作并且子进程添加到作业队列(我可以在 ProcessExplorer 中看到它)。但是,因为 PInvoke.SetInformationJobObject 不起作用 - 当我杀死父进程时,生成的进程仍然存在。

我在这段代码中有什么不正确的地方?

0 投票
3 回答
1738 浏览

iphone - 如何在代码中优雅地终止 iPhone 应用程序

完成后在 iPhone 上结束应用程序的正确方法是什么?

谢谢,

安东