|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
|
Воспроизведение GIF в параллельном потоке20.11.2015, 22:22. Показов 8552. Ответов 91
Метки нет (Все метки)
Есть окно, информирующее пользователя о том что идет обработка данных. Поместил на форму GIF-картинку с часами.
Как сделать, чтобы часы шли?
0
|
|
| 20.11.2015, 22:22 | |
|
Ответы с готовыми решениями:
91
ProgressBar в параллельном потоке
OpenGL в параллельном потоке Qt5 |
|
1086 / 916 / 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
|
|||
|
Почетный модератор
23251 / 9165 / 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
|
|
|
1086 / 916 / 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
|
|||||||||||
|
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
|
||||||
| 23.11.2015, 23:07 | ||||||
|
Как-то так
0
|
||||||
|
Модератор
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
|
|
| 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
|
|||||||||||||||||||||||||||||||||||||
|
Модератор
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
|
|
| 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
|
||||||
|
Модератор
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
|
||
| 25.11.2015, 18:17 | ||
|
К сожалению студии нет сейчас и проверенный код не могу выложить, поэтому только делюсь своими мыслями по поводу проблемы, как будет возможность - обязательно выложу код.
А насчет выгрузки потока - я имел ввиду прерывание выполнения процедуры в созданном потоке. Как только метод достиг End Sub - поток выгружается, а ваше исключение гласит о том что что-то пытается принудительно прервать выполнение потока как раз в момент, когда выполняется автоматическое прерывание и выгрузка... Это мои догадки и я почему-то уверен что это принудительное закрытие потока вызывается в вашем коде через .ABORT, что и есть принудитьльное прерывание потока, и у вас оно синхронно с автоматическим прерывание в конце процедуры. Прошу прощения за то что не могу выложить сейчас код... но, если есть желание, то попробуйте убрать или закомментировать строки кода где вызывается принудителтное прерывание потока ".abort" и проверьте будет ли это исключение повторяться? Добавлено через 8 минут А насчет
1
|
||
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
|||||||
| 25.11.2015, 18:21 [ТС] | |||||||
|
Я уже пробовал убрать фрагмент
0
|
|||||||
|
Модератор
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
|
||||||
| 25.11.2015, 18:28 | ||||||
|
А какую процедуру вы выполняете в отдельном потоке вы хоть догадались сами?
Наверное эту?
0
|
||||||
|
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
|
||||||
| 25.11.2015, 18:33 [ТС] | ||||||
|
Дело в том, что анимация работает (а следовательно и поток) ДО ТЕХ ПОР, ПОКА не выполнится вызов
Предположение же о том, что поток останавливатеся САМ в момент окончания процедуры Rd_DataSet_From_XML мне кажется странным. Процедура работвет в основном потоке, после ее окончания программа продолжает дальше работать и делать свои дела. Почему анимация должна САМА в этот момент остановиться - совершенно непонятно.
0
|
||||||
|
Модератор
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
|
|
| 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
|
||||||||
|
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
|
|
| 25.11.2015, 19:09 | |
|
Вот ща тролю свой код, ни как не могу выбить. Все норм.
А почему отказались от передачи объекта в процедуру запуска формы? Добавлено через 21 минуту Все понял почему выбивает. Причем тут 2 случая. 1. Прорисовка идет свои потоком. Когда время задержки почти ровняется времени обработки данных, происходит нелепая ситуация, команда на отображение окна поступает, но на прерывании прорисовка не успевает завершиться и бац... 2. Ошибка произойдет если мышью схватить окно и при завершении потока произойдет ошибка. Буду думать
0
|
|
|
Модератор
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
|
|
| 25.11.2015, 19:14 | |
|
Ivan215, до End Sub какраз таки доходит в момент простого закрытия формы ну или принудительного... а исключение вываливается до закрытия формы? Тоесть до выполнения shp2(False)?
Добавлено через 1 минуту Често я б с радостью тоже поковырялся с этой проблемой на практике, вот только беда - не могу студии нет под рукой
0
|
|
| 25.11.2015, 19:14 | |
|
Выполнение процедуры в параллельном потоке
Воспроизведение Gif анимации
Воспроизведение gif-анимации Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов.
Логика кажется понятной:
1. Находим ключевые слова.
2. Добавляем их на. . .
|