I am currently working on a Windows.Forms application. It s basically a simple motion detection problem.
I have a button on a form, that when pressed launches a background worker that does the following :
- Fetch an image from disk
- Create a new bitmap, to be used as the buffer.
- Perform Motion Detection
- From the results of Motion Detection, update the buffer (using the buffer s drawing surface)
- Fire the Progress Changed Event with an argument consisting of a clone of the buffer, basically
(sender as BackgroundWorker).ReportProgress((Bitmap)buffer.Clone())
In the Progress Changed Event, I then draw the buffer to screen.
if (!PnlImage.IsDisposed)
PnlImage.CreateGraphics().DrawImageUnscaled(buffer, 0, 0);
I can t help wondering if this is the best way to draw the updated image on the screen. Can anyone suggest any improvements I can make? Thanks.
EDIT : I have since updated the program to use the .NET Framework 4, and we re no longer using a BackgroundWorker. Instead, we are now using the System.Threading.Tasks namespaces, and using Invoke to update the background image from within the task.
Thanks to all replies.