private async Task DoWorkAsync(Color color, int column, int delay)
{
for (int i = 0; i < 5; i++)
{
// perform some asynchronous task in various ways
// await Task.Yield(); // yields immediately
// await Task.Delay(0); // continues synchronously
// await Task.Delay(100); // continues asynchronously on UI thread
// await Task.Delay(0).ConfigureAwait(false); // continues synchronously
// await Task.Delay(100).ConfigureAwait(false); // continues asynchronously on any thread
var startTime = sw.ElapsedMilliseconds;
// spin here for 'delay' milliseconds just to keep busy
while (sw.ElapsedMilliseconds < startTime + delay) { /* do nothing */ }
var endTime = sw.ElapsedMilliseconds;
Dispatcher.BeginInvoke((Action)(() => AddTimeRectangle(
startTime, endTime, color, column)));
}
}