Blocking the user interface stream is bad practice, because, among other things, this can cause the device to mark the application as "non-responsive." You are also not guaranteed that the position will be determined in two seconds, so at best your offer is only a partial correction.
What you really want to do is to block user interface input by disabling the ability to enter input (there should be methods to disable interface elements), and then see if there is a callback from the geolocation service when it determines your location. In the callback, re-enable the user interface elements. If such a callback does not exist, search for the location synchronously in the user interface thread using RunOnUIThread / InvokeOnMainThread so that the thread is blocked only until it returns.
If you still want to continue your decision,
RunOnUiThread(() => Thread.Sleep(2000));
should do the trick, but I really recommend not doing this. On iOS you will need to do
InvokeOnMainThread(() => Thread.Sleep(2000));
source share