I have a method (let's call it "CheckAll") that is called from multiple areas of my program, and can therefore be called for a 2nd time *before* the 1st time has completed.

To get around this I have implemented a "lock" that (if I understand it correctly), halts the 2nd thread until the 1st thread has completed.

However what I really want is for this 2nd call to return to the calling method immediately (rather than halt the thread), and to schedule CheckAll to be run again once it has completed the 1st time.

I could setup a timer to do this but that seems cumbersome and difficult. Is there a better way?