private async void Btn_start_Click(object sender, RoutedEventArgs e) { cts = new CancellationTokenSource(); //Fire&Forgtet //Worker wrkr = new Worker(10,1000,cts ); //wrkr.CountDown(); //ProgressUpdate //IProgress<int> p1 = new Progress<int>(UpdateUI); //WorkerProgress wrkrp = new WorkerProgress(10, 1000, cts, p1); //wrkrp.CountDown(); //Async //WorkerAsync wrkra = new WorkerAsync(10, 1000, cts); //await wrkra.CountDown(); //Async Progress IProgress <int> p2 = new Progress <int>(UpdateUI); Semaphore s = new Semaphore(1, 1); WorkerProgressAsync wrkrpa = new WorkerProgressAsync(10, 1000, cts, p2, s); await wrkrpa.CountDown(); MessageBox.Show("hey yo wassup, i wait the other thread"); }