我制作了一个基于 Aforge 的程序(它是一个视频库)。该库为来自摄像机的下一个视频帧创建自己的刷新事件。到目前为止一切顺利,早期的人帮助我处理了多线程,因此这些 Aforge 线程可以报告回主程序线程,到目前为止一切都很好,效果很好。
代码可以在这里看到:how to do multithreading when using outside referenced code。
但现在我经常注意到一个新的程序错误。当我想退出程序时,问题就开始了。目前,Aforge 线程可能仍处于活动状态。它想写回关闭的主窗体。
不知何故,我需要在关闭程序之前停止另一个线程。Aforge 中有一个选项可以执行相机停止之类的操作,但这还不够。但是我的代码仍然想写在已经关闭的主窗体上。
有没有办法停止所有线程,或者有什么安全的方法来关闭原始线程?我什至将向主程序的后台报告放在了 try catch 构造中,但效果不佳,在这些情况下停止它的唯一方法是按下 Visual Studio 本身中的停止执行按钮。