Notify when thread is complete, without locking calling thread
I am working on a legacy application that is built on top of NET 3.5. This
is a constraint that I can't change. I need to execute a second thread to
run a long running task without locking the UI. When the thread is
complete, somehow I need to execute a Callback.
Right now I tried this pseudo-code:
Thread _thread = new Thread(myLongRunningTask) { IsBackground = True };
_tread.Start();
// wait until it's done
_thread.Join();
// execute finalizer
The second option, which does not lock the UI, is the following:
Thread _thread = new Thread(myLongRunningTask) { IsBackground = True };
_tread.Start();
// wait until it's done
while(_thread.IsAlive)
{
Application.DoEvents();
Thread.Sleep(100);
}
// execute finalizer
Of course the second solution is not good cause it overcharge the UI. What
is the correct way to execute a callback when a _thread is complete? Also,
how do I know if the thread was cancelled or aborted?
*Note: * I can't use the BackgroundWorker and I can't use the Async
library, I need to work with the native thread class.
No comments:
Post a Comment