2

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

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

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

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

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

4

1 回答 1

2

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

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

于 2012-10-30T19:42:49.733 回答