I wish my method to wait about 500 ms and then check if some flag has changed. How to complete this without blocking the rest of my application?
I don't really understand the question.
If you want to block before checking, use Thread.Sleep(500);
Thread.Sleep(500);
If you want to check asynchronously every x seconds, you can use a Timer to execute a handler every x milliseconds.
This will not block your current thread.