I recently tried to use backgroundworker instead of ‘classic’ threads and I’m realizing that it’s causing, at least for me, more problems than solutions. I have a backgroundworker running a synchronous read (in this case from serialPort) and getting blocked around 30 seconds in 1 code line, then cancellationpending isn’t the solution. I’m seeing that if the application gets closed at this point (either with the cross button and Application.Exit()) the process keeps zombie forever.
I need a way to force abort or to kill the backgroundworker thread.
I’m not very sure on what you’re trying to accomplish, but maybe the SerialPort.DataReceived event is a better solution?
If you’re already proficient with the usage of threads, I don’t see the point in using BackgroundWorker. It’s designed for people who don’t understand threads in the first place.
Besides, I don’t like the idea of aborting a thread. It feels dangerous, and multithreaded applications don’t need any more risk taking.