我是一个WPF / C#应用程序,它具有伪造的进程 点击按钮>开始一个线程从网络摄像头API拍摄照片>实例化网络摄像头API> API启动回调线程>拍摄照片> API对象已被处置
这些步骤通常可以工作,除了网络摄像头API的回调线程没有关闭的最后部分。因此,在我的任务管理器中,我总是以“ghost”进程结束,该进程与我的基本WPF应用程序共享同一个名称。此外,第二次调用同一个网络摄像头API(拍摄第二张照片)失败了。
所以,我正试图找到一种方法来确保我的root应用程序中的所有线程都被强制关闭。有没有办法确保没有剩余的线程?
答案 0 :(得分:8)
如果在这些线程上将IsBackground
设置为true,它们将在关闭时终止。
答案 1 :(得分:3)
如果您的应用中有一个窗口,请将Application.ShutdownMode设置为OnMainWindowClose。当主窗口关闭时,这将终止任何正在运行的后台线程。以编程方式,您可以调用Environment.Exit尽可能优雅地杀死所有线程(但如果不是,则强制执行)并退出应用程序。
答案 2 :(得分:0)
如果你看到除主程序之外的一些ghost进程,那么它不是一个线程问题。您已创建其他进程来执行操作。杀死它。您的资源将被释放。当存在更大问题时,您不必担心线程正在运行 - 其他流程仍然存在于资源上。