2010-07-16 2 views
1

У меня есть диалог форм окон, который делает что-то более продолжительное время после нажатия кнопки. Поскольку это занимает время, я хочу показать анимацию в диалоговом окне (анонимный gif, avi или что-то еще). Как я могу добиться этого. Мне нужен собственный поток для этого (у меня нет опыта с потоками)? Можете ли вы предоставить мне фрагмент кода, как это сделать?Показать анимацию во время более длительного процесса в форме окна

ответ

6

Вы можете показать анимированный GIF, используя обычный элемент управления PictureBox, и вы можете найти полезные анимированные GIF-файлы по адресу Ajaxload.

Однако, если вы выполняете операцию над потоком пользовательского интерфейса, программа замерзает до тех пор, пока она не закончится.
Во избежание этого используйте BackgroundWorker, например:

Добавить компонент BackgroundWorker в свою форму.
Обратите внимание на свое событие DoWork и выполните свою операцию.
Обращайтесь к событию RunWorkerCompleted и скройте PictureBox.
Когда вы хотите запустить операцию, покажите PictureBox, а затем вызовите метод RunWorkerAsync.

+0

Ударьте меня. :) –

1

Я бы потратил много времени в своей нити и отобразил анимированный gif в потоке пользовательского интерфейса. Кроме того, может оказаться полезным отключить кнопку, которая запускает процесс, чтобы нетерпеливый пользователь не нажимал его несколько раз.