确保所有线程都已关闭或强制关闭某个线程

本文关键字:线程 确保 | 更新日期: 2023-09-27 18:00:37

I是一个WPF/C#应用程序,它具有点击按钮>启动一个线程从网络摄像头拍摄图片API>实例化网络摄像头API>API启动回调线程>拍摄图片>API对象被释放

除了最后一部分之外,这些步骤通常都有效,在最后一部分中,到网络摄像头API的回调线程没有关闭。因此,在我的任务管理器中,我总是以一个"ghost"进程结束,它与我的基本WPF应用程序同名。同样,对同一个网络摄像头API进行第二次调用(拍摄第二张照片)失败得很糟糕。

因此,我试图找到一种方法来确保我的根应用程序中的所有线程在任何时候都被强制关闭。有没有办法确保没有剩余的线程?

确保所有线程都已关闭或强制关闭某个线程

如果在这些线程上将IsBackground设置为true,它们将在关闭时终止。

如果您的应用程序中有一个窗口,请将Application.ShutdownMode设置为OnMainWindowClose。这将在主窗口关闭时终止任何正在运行的后台线程。在程序上,您可以调用Environment.Exit以尽可能优雅地终止所有线程(但如果不是,则强制终止)并退出应用程序。

如果您在主程序之外看到一些重影进程,那么这不是线程问题。您已经创建了其他进程来执行该操作。杀死它。你的资源将会被释放。当出现更大的问题(其他进程挂在资源上)时,您不必担心线程正在运行。