gpt4 book ai didi

c# - 如何正确退出多线程程序

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:18 24 4
gpt4 key购买 nike

我制作了一个基于 Aforge 的程序(它是一个视频库)。该库为来自相机的下一个视频帧创建自己的刷新事件。到目前为止一切顺利,之前有人帮助我处理多线程,因此这些 Aforge 线程可以向主程序线程报告,到目前为止一切顺利,效果很好。

代码可以在这里看到:how to do multithreading when using outside referenced code .

但现在我经常注意到一个新的程序错误。当我想退出程序时,问题就开始了。目前 Aforge 线程可能仍处于事件状态。它想写回已关闭的主窗体。

不知何故,我需要在关闭程序之前停止另一个线程。 Aforge 中有一个选项可以执行相机停止之类的操作,但这还不够。但是我的代码仍然想写在已经关闭的主窗体上。

有没有办法停止所有线程,或者有什么安全的方法可以关闭原始线程?我什至在 try catch 构造中将向主程序的返返回告放在一边,但效果不佳,在这些情况下停止它的唯一方法是按下 Visual Studio 本身内的停止执行按钮。

最佳答案

如果我正确理解您的问题,您可能会在关闭表单时在表单上调用 Invoke。我也遇到过这种情况。

我所做的是在开始关闭表单时设置一个“shutdown”变量,然后使用 AppDomain.CurrentDomain.UnhandledException 监视 InvalidOperationException (或您得到的任何东西),如果设置了关机则忽略。

关于c# - 如何正确退出多线程程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com