У меня есть диалог форм окон, который делает что-то более продолжительное время после нажатия кнопки. Поскольку это занимает время, я хочу показать анимацию в диалоговом окне (анонимный gif, avi или что-то еще). Как я могу добиться этого. Мне нужен собственный поток для этого (у меня нет опыта с потоками)? Можете ли вы предоставить мне фрагмент кода, как это сделать?Показать анимацию во время более длительного процесса в форме окна
ответ
Вы можете показать анимированный GIF, используя обычный элемент управления PictureBox, и вы можете найти полезные анимированные GIF-файлы по адресу Ajaxload.
Однако, если вы выполняете операцию над потоком пользовательского интерфейса, программа замерзает до тех пор, пока она не закончится.
Во избежание этого используйте BackgroundWorker, например:
Добавить компонент BackgroundWorker в свою форму.
Обратите внимание на свое событие DoWork
и выполните свою операцию.
Обращайтесь к событию RunWorkerCompleted
и скройте PictureBox.
Когда вы хотите запустить операцию, покажите PictureBox, а затем вызовите метод RunWorkerAsync.
Я бы потратил много времени в своей нити и отобразил анимированный gif в потоке пользовательского интерфейса. Кроме того, может оказаться полезным отключить кнопку, которая запускает процесс, чтобы нетерпеливый пользователь не нажимал его несколько раз.
Ударьте меня. :) –