I have a System.Timers.Timer timer which it’s AutoReset is set to false. I use a try/finally to insure I Start the timer at the end of it’s callback (I use the timer this way to prevent overlapping of callback execution). Code:
// inside timer call back
try
{
// Do something
}
finally
{
timer.Start(); // Is this line always executed?
}
My question is what happens if the executing thread is Aborted? Does the finally section still executed or there’s no thread to run that part?
Yes, that line will always be executed and the abort blocked until the code in the
finallyclause finishes.