Imports System.Threading Public Class Window107 Private Async Sub btnRun_Click(sender As Object, e As RoutedEventArgs) Handles btnRun.Click Halt = False Nr = 0 Do Await Task.Run(New Action(AddressOf DisplaySegmentTask)) GenerateNextSegment() Loop Until Halt End Sub Private Halt As Boolean Private rnd As New Random Private Nr As Integer Private rec As Rectangle Private Sub DisplaySegmentTask() Dispatcher.Invoke(New Action(Sub() If rec IsNot Nothing Then cv.Children.Add(rec) End Sub)) Thread.Sleep(1000) End Sub Private Sub GenerateNextSegment() rec = New Rectangle With {.Width = 100, .Height = 50, .Fill = Brushes.Red} Canvas.SetLeft(rec, rnd.Next(5, 300)) Canvas.SetTop(rec, rnd.Next(5, 400)) Nr += 1 Halt = Nr = 10 End Sub End Class