|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
|
Воспроизведение GIF в параллельном потоке20.11.2015, 22:22. Показов 8823. Ответов 91
Метки нет (Все метки)
Есть окно, информирующее пользователя о том что идет обработка данных. Поместил на форму GIF-картинку с часами.
Как сделать, чтобы часы шли?
0
|
|
| 20.11.2015, 22:22 | |
|
Ответы с готовыми решениями:
91
ProgressBar в параллельном потоке
OpenGL в параллельном потоке Qt5 |
|
1087 / 917 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
|
|
| 23.11.2015, 20:12 | |
|
И еще. Там тавтология типа "if ProgressThread Is Nothing..." - это не обязательно, если включение-выключение этого окна происходит в правильном порядке. Это на случай если предполагаются ошибки при обработке данных... Хотя это мало вероятно
0
|
|
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
|||
| 23.11.2015, 20:22 [ТС] | |||
Поэтому и не стал пробовать 10 пост
0
|
|||
|
Почетный модератор
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
|
|
| 23.11.2015, 20:38 | |
|
Ivan215, ну как у Вас форма сейчас зависает?
Вот так и будет зависать. С одним лишь отличием, что если сейчас Вы вызовите вторую форму - она так же повиснет, а в моем примере - будет работать и отвечать как ни в чем не бывало. Ответы даны, остается лишь пробовать. Посты набивать не хочу впустую, за сим вынужден откланяться
1
|
|
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
||||||||||||||||
| 23.11.2015, 20:40 [ТС] | ||||||||||||||||
|
При старте программы поставил вызов
Получаю в результате ошибку (см. скрин)
0
|
||||||||||||||||
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
|
| 23.11.2015, 20:46 [ТС] | |
|
Sorry, Sklifosovsky, у меня Net 4.0
0
|
|
|
1087 / 917 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
|
|
| 23.11.2015, 20:50 | |
Сообщение было отмечено Памирыч как решение
Решение
1
|
|
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
|||||||||||
| 23.11.2015, 22:49 [ТС] | |||||||||||
|
Спасибо тебе Sklifosofsky, за простое решение. Который раз меня выручаешь!!!
Добавлено через 37 минут Кому интересно, вот что получилось:
Sklifosofsky, если будет желание - еще одна вещица осталась.
0
|
|||||||||||
|
1087 / 917 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
|
||||||
| 23.11.2015, 23:07 | ||||||
|
Как-то так
0
|
||||||
|
Модератор
4378 / 3448 / 512
Регистрация: 27.01.2014
Сообщений: 6,268
|
|
| 24.11.2015, 00:48 | |
|
У вас обращение к контролам из другого потока. Добавьте при старте программы/главной формы IllegalThreadCalls = True
0
|
|
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
|||||||||||||||||||||||||||||||||||||
| 25.11.2015, 03:31 [ТС] | |||||||||||||||||||||||||||||||||||||
|
Спасибо, Sklifosofsky, вроде все работает. Только когда не было интервала задержки, при быстрой работе на клавиатуре иногда форма теряла GIF, а иногда вообще программа вылетала в аут.
А как Ваш пример сделать через InvokeRequired? Добавлено через 23 часа 36 минут Sklifosofsky, чего-то все-таки не хватает. Иногда снимается прога:
Вот один из советов отцов-основателей:
В общем, почти то же самое, что Памирыч предлагал:
Я видел примеры на C# где в Invoke по несколько команд засовывают, вот только не просеку, как это будет выглядеть на VB. А в моем случае в Invoke надо засунуть 3 команды:
Не-а. И последний вариант глючит - вылетает программа - по тому же исключению.
Добавлено через 1 час 18 минут Вот так вроде не вешается ПОКА:
0
|
|||||||||||||||||||||||||||||||||||||
|
Модератор
4378 / 3448 / 512
Регистрация: 27.01.2014
Сообщений: 6,268
|
|
| 25.11.2015, 07:14 | |
|
Ненадо принудительно выгружать поток через Abort. После отработки функции вашей - поток выгрузится сам а вы его еще допоонительно во время выгрузки пытаетесь выгрузить.
0
|
|
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
||||||
| 25.11.2015, 17:14 [ТС] | ||||||
|
Не понял. Как это он выгрузится? В некоторый ОПРЕДЕЛЕННЫЙ момент надо остановить анимацию и убрать форму с экрана. Если точнее, в момент окончания работы процедуры Call Rd_DataSet_From_XML. С какого бодуна второй поток остановится именно в этот момент САМ?
Нельзя ли по подробнее. То есть, если я Вас правильно понял вызов
Добавлено через 42 минуты Yury Komar, у меня к Вам просьба. Уверен, Вы владеете кроме русского языка еще и VB.NET (и наверняка лучше меня). Не могли бы Вы отвечать еще и с помощью кода, а не только по-русски. Я привел последний вариант процедуры. Вроде все подробно как мог объяснил. Если Вы считаете что что-то не нужно, приведите откорректированный ПРАВИЛЬНЫЙ текст процедуры, убрав все то что не нужно. А так Ваши замечания имеют весьма малую (для меня) ценность вследствие малоинформативности.
0
|
||||||
|
Модератор
4378 / 3448 / 512
Регистрация: 27.01.2014
Сообщений: 6,268
|
||
| 25.11.2015, 18:17 | ||
|
К сожалению студии нет сейчас и проверенный код не могу выложить, поэтому только делюсь своими мыслями по поводу проблемы, как будет возможность - обязательно выложу код.
А насчет выгрузки потока - я имел ввиду прерывание выполнения процедуры в созданном потоке. Как только метод достиг End Sub - поток выгружается, а ваше исключение гласит о том что что-то пытается принудительно прервать выполнение потока как раз в момент, когда выполняется автоматическое прерывание и выгрузка... Это мои догадки и я почему-то уверен что это принудительное закрытие потока вызывается в вашем коде через .ABORT, что и есть принудитьльное прерывание потока, и у вас оно синхронно с автоматическим прерывание в конце процедуры. Прошу прощения за то что не могу выложить сейчас код... но, если есть желание, то попробуйте убрать или закомментировать строки кода где вызывается принудителтное прерывание потока ".abort" и проверьте будет ли это исключение повторяться? Добавлено через 8 минут А насчет
1
|
||
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
|||||||
| 25.11.2015, 18:21 [ТС] | |||||||
|
Я уже пробовал убрать фрагмент
0
|
|||||||
|
Модератор
4378 / 3448 / 512
Регистрация: 27.01.2014
Сообщений: 6,268
|
||||||
| 25.11.2015, 18:28 | ||||||
|
А какую процедуру вы выполняете в отдельном потоке вы хоть догадались сами?
Наверное эту?
0
|
||||||
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
||||||
| 25.11.2015, 18:33 [ТС] | ||||||
|
Дело в том, что анимация работает (а следовательно и поток) ДО ТЕХ ПОР, ПОКА не выполнится вызов
Предположение же о том, что поток останавливатеся САМ в момент окончания процедуры Rd_DataSet_From_XML мне кажется странным. Процедура работвет в основном потоке, после ее окончания программа продолжает дальше работать и делать свои дела. Почему анимация должна САМА в этот момент остановиться - совершенно непонятно.
0
|
||||||
|
Модератор
4378 / 3448 / 512
Регистрация: 27.01.2014
Сообщений: 6,268
|
|
| 25.11.2015, 18:37 | |
|
Вообще-то вы не запускаете процедуру Rd_DataSet_From_XML в отдельном потоке, а следовало ьы, на что я вам в первых своих постах и указывал, вы начали вертеть носом и говорить что таких еще десятки штук и проблемно будет это осуществить. Поэтому и отказались от запуска этой процедуры в ОТДЕЛЬНОМ от основного потоке... и поэтому речь об этой процедуре прекратилась и все переключились на на вызов процедуры открытия формы с гифкой в отдельном потоке...
0
|
|
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
||||||||
| 25.11.2015, 18:46 [ТС] | ||||||||
|
Вот процедура, запускаемая во вспомогательном потоке:
Читаю MSDN:
Или я что-то не так понимаю? Добавлено через 2 минуты
Мое мнение следующее. Что запускать и в каком потоке не имеет никакого значения (по причине симметрии) в том случае, если многопоточность работает НАДЕЖНО. В чем у меня есть теперь все основания сомневаться.
1
|
||||||||
|
1087 / 917 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
|
|
| 25.11.2015, 19:09 | |
|
Вот ща тролю свой код, ни как не могу выбить. Все норм.
А почему отказались от передачи объекта в процедуру запуска формы? Добавлено через 21 минуту Все понял почему выбивает. Причем тут 2 случая. 1. Прорисовка идет свои потоком. Когда время задержки почти ровняется времени обработки данных, происходит нелепая ситуация, команда на отображение окна поступает, но на прерывании прорисовка не успевает завершиться и бац... 2. Ошибка произойдет если мышью схватить окно и при завершении потока произойдет ошибка. Буду думать
0
|
|
|
Модератор
4378 / 3448 / 512
Регистрация: 27.01.2014
Сообщений: 6,268
|
|
| 25.11.2015, 19:14 | |
|
Ivan215, до End Sub какраз таки доходит в момент простого закрытия формы ну или принудительного... а исключение вываливается до закрытия формы? Тоесть до выполнения shp2(False)?
Добавлено через 1 минуту Често я б с радостью тоже поковырялся с этой проблемой на практике, вот только беда - не могу студии нет под рукой
0
|
|
| 25.11.2015, 19:14 | |
|
Выполнение процедуры в параллельном потоке
Воспроизведение Gif анимации
Воспроизведение gif-анимации Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|