private async void Button_Click(object sender, RoutedEventArgs e) { Random rnd = new Random(); int range = -1; int from = -1; int to = -1; var progress = new Progress(value => progressBar.Value = value); if (Int32.TryParse(TextBoxFrom.Text, out from) && Int32.TryParse(TextBoxTo.Text, out to) && Int32.TryParse(TextBoxRange.Text, out range)) { progressBar.Minimum = 0; progressBar.Maximum = range; await Task.Run(() => { string num = String.Empty; for (int i = 1; i <= range; i++) { String rand = rnd.Next(from, to).ToString(); randNum.Add(rand); Dispatcher.BeginInvoke((Action)(() => TextBoxNumbers.AppendText(rnd.Next(from, to).ToString()))); Dispatcher.BeginInvoke((Action)(() => TextBoxNumbers.AppendText(Environment.NewLine))); ((IProgress < int>)progress).Report(i); System.Threading.Thread.Sleep(1000); } }); } else { MessageBox.Show("Wszystkie wartosci muszą być liczbami calkowitymi!"); } }