Not possible 100% execution?

I’m a little bit confused. My main ide to use hangfire was because of long execution jobs.
Reading here and there, I understand that there is no guaranteed way task will be finished?
For example, My users want to upload big files to DB. Millions of lines. So I want to fire background job, but if app pool gets recycled or something like that it means file upload can get interrupted and half uploaded?

This is how it works? Or there is some way to guarantee such jobs gets executed 100%