I'm using a background worker in my project & in my DoWork method i run a infinite loop with a Thread.Sleep of 15mins. Now if i call CancelAsync() method there seems to be no effect since the thread is in sleep mode. From what i researched we need to use Threading & cancellation token. Can anyone explain me how to implement this efficiently. Also based on some conditions i will need to restart the DoWork method as well..