erwinwolff/aforge

AsyncVideoSource thread hangs when stopping.

Closed this issue · 1 comments

What steps will reproduce the problem?
From visual studio:
1. Connect to USB web cam as VideoCaptureDevice instance
2. Create AsyncVideoSource instance with previous VCD instance
3. Start AsyncVideoSource
4. Call AsyncVideoSource.SignalToStop()
5. Exit program

What is the expected output? What do you see instead?
Expected to see VCD thread stop and AVS thread stop.  Program doesn't exit as a 
thread is blocked on System.Threading.WaitOne.

What version of the product are you using?
AForge.Net 2.2.5

Please provide any additional information below.

AsyncVideoSource.SignalToStop calls IVideoSource.SignalToStop but it doesn't 
cause it's own thread to stop by calling the internal "Free" method.  This 
causes "imageProcessingThread_Worker" to block on isNewFrameAvailable.WaitOne.

Original issue reported on code.google.com by Mark.Lea...@gmail.com on 19 Nov 2013 at 6:22

Fixed AsyncVideoSource so it disposes internal resources when it was signalled 
to stop. Freeing is done right after nested video source is signalled to stop. 
When freeing the async source un-subscribes from nested source event, so it 
will no longer be notified of new frames, which means freeing internal 
processing thread is safe (especially after waiting till it finishes current 
job).

Committed in revision 1726.

Original comment by andrew.k...@gmail.com on 6 Jan 2014 at 3:23

  • Changed state: Fixed
  • Added labels: Milestone-Coming, Project-Video