Synchronising data in C#
Instead of do ... while loop you can use SpinWait.SpinUntil:

bool dataHaveBeenFetched = SpinWait.SpinUntil(() =&gt; TrytoFetchData((CServer)sender))


And as @t3chb0t noted it seems strange to sleep 1 second between TrytoFetchData calls.