问题描述
关闭代码:if(mv.videoSourcePlayer.InvokeRequired==true){CloseSXTcsxt=newCloseSXT(Closesxt);mv.videoSourcePlayer.BeginInvoke(csxt);}privatevoidClosesxt(){mv.videoSourcePlayer.SignToStop();mv.videoSourcePlayer.WriteForStop();}mv是在子线程中创建的实例对象,而CloseSXT是一个delegate委托,mv是一个我自己定义的类的实例化对象,其中也在此类中定义了VideoSourcePlayer控件,现在要调用VideoSourcePlayer控件的关闭方法,就出现不能跨线程访问控件的异常,于是就想使用委托和Invoke方式解决。但是使用后发现一直都没调用委托方法,摄像头关闭不了,一直都被占用。如果关闭主进程使用Evironment.Exit()是可以释放的,但是这样与程序是相违背的。实在不知道怎么解决,求给我高手帮忙解决,另外我想如果有强制释放摄像头的方法的话,那就更好了。
解决方案
解决方案二:
你就不应用子线程去创建mv..要用UI线程去创建。要不然连委托都用不了。
时间: 2024-09-20 22:56:52