If a thread is running a function func1 that calls another function func2 inside it…
Then I called thread.Abort()
Will this stop func1 only
OR func1 and func2 and all the functions func1 has called??
Thanks
Edit: Here are more detail:
func1 is called in a new thread, it continuously calls func2 on regular basis…
func2 begin doing some work only if some array is not null.. it finishes it and return
When supervisor wants to save data, it aborts Thread of func1– and then makes array null, saves data, then fill in the array with new one.. and starts Thread with func1 again..
Sometimes exception is raised because array is null in func2.. so func1 abort did not affect func2
Thread.Abortis not guaranteed to stop the thread and you should avoid using it if possible.Emphasis mine.
What it does is raise a
ThreadAbortExceptionin the target thread. If you catch this exception, the code will continue executing until it reaches the end of the catch block, at which point the exception is automatically rethrown. If you don’t catch it, it is similar to a normal exception – it propagates up the call stack.Assuming you don’t catch the exception, all the code running in that thread will stop running. Other threads that were started from that thread will not be affected.