At the moment your code will all be running on the UI thread so there is no way for you to report progress because the thread is busy processing your loop. MonoMac has TPL support so you should be able to leverage it to run your code in the background
Task.Factory.StartNew(() => {
for (...)
{
...
// update UI
uiControl.BeginInvoke(() => {
uiControl.Text = "Updated from thread";
});
}
});