I have this simple code in aspnet :assuming no exceptions nor file locking nor process terminates :
new Thread(()=>{ Thread.sleep(15000);
Unless the thread is aborted or the above statements throw exceptions, yes, it will always be created (leaving file permissions and IO problems out of the picture).
Reasons the thread might be aborted: