Опубликован: 11.09.2006 | Уровень: специалист | Доступ: свободно
Лекция 7:

Асинхронное программирование

Элемент управления ProgressBar

Элемент управления ProgressBar применяется для отображения степени завершенности длительных задач, например, копирования файлов или установки программы. Создайте новое приложение и назовите его ProgressBar. Перетаскиваем на форму текстовое поле, две кнопки, PictureBox, ProgressBar и устанавливаем следующие свойства элементов:

button1, свойство Значение
Name btnEnter
Location 128; 216
Text Ввод
button2, свойство Значение
Name btnStart
Location 208; 216
Text Пуск
textBox1, свойство Значение
Location 16; 216
Text
progressBar1, свойство Значение
Location 16; 32
Maximum 30000
Size 264; 23
pictureBox1, свойство Значение
Image Code\Glava7\ProgressBar\Image\FILECOPY.gif
Maximum 30000
Location 16; 88
Size 264; 72
Visible False

Элемент ProgressBar имеет свойство Value, принимающее численное значение, которое отображается на шкале заполнения. Мы установили максимальное значение этой шкалы 30000. При нажатии на кнопку "Ввод" значение, введенное в текстовое поле, будет устанавливаться на шкале:

private void btnEnter_Click(object sender, System.EventArgs e)
 {

   try
   {
	   progressBar1.Value = Convert.ToInt32(textBox1.Text);
				
				
   }
	 catch(Exception)
  {
	MessageBox.Show("При выполнении преобразования типов возникла ошибка");
	return;
	}
 }

При нажатии на кнопку "Пуск" будет запускаться простой процесс, который будет отражать ProgressBar, а также появится стандартный рисунок копирования:

private void btnStart_Click(object sender, System.EventArgs e)
 {
   pictureBox1.Visible = true;
   for(int i =0; i<30000; i++)
   {
	  progressBar1.Value = i;
   }
 }

Запускаем приложение (рис. 7.12). Процесс выполняется в синхронном режиме — попробуйте перемещать форму в момент запуска.

Приложение ProgressBar

Рис. 7.12. Приложение ProgressBar

Даже такое простое приложение требуется запускать в асинхронном режиме. Переделайте его самостоятельно, используя в качестве примера приложение ArbitraryMethod.

На диске, прилагаемом к книге, вы найдете приложение ProgressBar (Code\Glava7\ ProgressBar).

Елена Дьяконова
Елена Дьяконова

При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: 

Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll

Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан.

Затем:

Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll

Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз.

Александр Сороколет
Александр Сороколет

Свойство WindowState формы blank Maximized. Не открывается почемуто на всё окно, а вот если последующую форму бланк открыть уже на макс открывается :-/