If initialization fails, the thread stops execution and returns an error code. If it succeeds,Run()is called where the real threaded work is done. Upon completion,Exit()is called to allow correct clean up.