Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/35: Рейтинг темы: голосов - 35, средняя оценка - 4.83
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398

Воспроизведение GIF в параллельном потоке

20.11.2015, 22:22. Показов 8555. Ответов 91
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть окно, информирующее пользователя о том что идет обработка данных. Поместил на форму GIF-картинку с часами.

Как сделать, чтобы часы шли?
Миниатюры
Воспроизведение GIF в параллельном потоке  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2015, 22:22
Ответы с готовыми решениями:

ProgressBar в параллельном потоке
Здравствуйте, пишу на qt 3.3 . Необходимо сделать прогресс бар при записи на двд диск под линуксом,чтобы пользователь знал что программа...

Таймер в параллельном потоке
Всем доброго времени. Начал изучать много-поточное программирование и сразу наткнулся на сложность. У меня есть таймер который изменяет...

OpenGL в параллельном потоке Qt5
Приветствую всех, мне необходимо отображать в программе большое количество OpenGL окон, каждое из них достаточно тяжёлое, поэтому нужно...

91
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
03.12.2015, 23:00  [ТС]
Студворк — интернет-сервис помощи студентам
То есть появится и сразу исчезнет
Так у Памирыча было. Смотри Пост #6.

Переделал вот так:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
            If Vs Then
                System.Threading.Thread.Sleep(200)
 
                Tme.Show()
                My.Application.DoEvents()
 
                If Tme.Pic1.InvokeRequired Then
                    Tme.Pic1.Invoke(New System.Threading.ThreadStart(AddressOf Pic_Refr))
                End If
            Else
                Tme.Hide()
            End If
VB.NET
1
2
3
4
5
6
7
8
9
    Public Sub Pic_Refr()
        'System.Threading.Thread.Sleep(g_interval)
 
        Tme.Label1.Text = g_mes
        Tme.Pic1.Refresh()
 
        Tme.ShowDialog()
 
    End Sub
Результат - форма отображается, но GIF - не рефреширует.
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
03.12.2015, 23:47
6 пост? Да вот смотрел я на него... Но там картинка, я так понял, находится на той же форме, а тут идет вызов отдельного окна

Больше из моих 2-ого (доделанный) и варианта в голову не приходит
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
04.12.2015, 00:42  [ТС]
а тут идет вызов отдельного окна
Как понять - идет вызов отдельного окна?

Стоит же: Tme.Pic1.Refresh()

Что Вы имеете в виду под ВЫЗОВОМ ОТДЕЛЬНОГО ОКНА?

Добавлено через 2 минуты
Больше из моих 2-ого (доделанный) и варианта в голову не приходит
Да, по правде говоря, я думал, что Памирыч что-нибудь ответит. Он же укорял меня, что я не опробовал его советы. Ну вот, теперь попробовал.
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
04.12.2015, 00:46  [ТС]
Во избежание недоразумений и разночтений - вот кратинка:
Миниатюры
Воспроизведение GIF в параллельном потоке  
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
04.12.2015, 00:54
Из Вашего кода я понял лишь, что форму вешает Rd_DataSet_From_XML. Вот ее и надо вызвать в потоке.
Почему бы не полениться и сделать всетаки вызов ресурсоемких процедур во вспомогательном потоке? Ведь так и проблема рефреширования гифки и тд и тп, все уйдет как страшный сон.

Добавлено через 4 минуты
А Tme.Pic1.Refresh() выпоняется всего один раз при запуске потока, а не в цикле прокручивается. От нее по моему толке совсем никакого...
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
04.12.2015, 01:22  [ТС]
На колу висело мочало... Начинаем все сначала. Я же писал про симмметрию потоков в Windows - по моему мнению в нормальной ОС потоки должны быть симметричны, и без разницы в каком что запущено.

Насчет одноразового выполнения Refresh. Почитайте предыдущие посты - варианты, когда программа работала, но нестабильно - там ВООБЩЕ НЕТ обращения к методу Refresh.

От нее по моему толку совсем никакого...
Почем мне знать, может и никакого - повторяю - ЭТО СОВЕТ Памирыча (пост #6).

Добавлено через 2 минуты
По правде говоря, я понятия не имею, как происходит сам процесс отображения GIF-а, механизм так сказать. Поэтому мне трудно судить о том, ЧТО нужно для его нормальной анимации.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
04.12.2015, 01:34
Ну может быть тогда анимировать гифку ВРУЧНУЮ, прогоняя ее фрэймы таймером с подходящим интервалом?

Добавлено через 44 секунды
Тоесть извлекать каждый фрэйм и грузить его в PB как изображения поочереди.
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
04.12.2015, 01:39  [ТС]
Сейчас сделал вот так:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            g_interval = Interval
            g_mes = Mes
 
            If Vs Then
                System.Threading.Thread.Sleep(20)
 
                Tme.Show()
                My.Application.DoEvents()
 
                If Tme.Pic1.InvokeRequired Then
                    MsgBox("Invoke")
                
                    Tme.Pic1.Invoke(New System.Threading.ThreadStart(AddressOf Pic_Refr))
                End If
 
            Else
                Tme.Hide()
            End If
Фокус в том, что метод Invoke ВООБЩЕ НЕ ЗАПУСКАЕТСЯ! Я не попадаю внутрь If - MsgBox с Invoke не отображается на экране.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4372 / 3442 / 512
Регистрация: 27.01.2014
Сообщений: 6,266
04.12.2015, 01:48
Я это заметил. Потс #77... но не факт что добавление условия на запуск Pic_Refr решит проблему. Проверить надо.
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
04.12.2015, 02:16  [ТС]
Да ребята. А что если подвести итоги. 90 постов, а работающего решения (в смысле стабильно, без глюков - нет).

О чем это говорит, конечно - только об одном - Какая прекрасная и продуманная эта система - VB.NET. И как легко и непринужденно в ней сделать ЭЛЕМЕНТАРНУЮ ВЕЩЬ, не говоря уже о сложной.

Как-то слабо верится, что это все из-за того, что я не желаю (а между прочим, я принципиально не желаю - должно работать так, как я считаю нужным) поменять местами потоки.

Добавлено через 2 минуты
Основная работа должна выполняться в ОСНОВНОМ потоке, а вспомогательная (информирование пользователя) - ВО ВСПОМОГАТЕЛЬНОМ. Что поделать, привередлив я до жути.
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
04.12.2015, 18:37
VB.NET
1
в смысле стабильно, без глюков - нет
Не верю =)
Кидайте код который как бы работатет
0
21 / 22 / 10
Регистрация: 03.07.2014
Сообщений: 398
04.12.2015, 20:22  [ТС]
Не верю =)
Кидайте код который как бы работатет
А верить и не требуется, достаточно ПРОВЕРИТЬ.

Кидать по новой ничего не нужно. Вот, например, код из поста 66 - работает - но временами выдает исключение. В этой теме уже выложено три - четыре варианта, которые у меня работают, но нестабильно. Можно начать с конца - итак код поста 66. Можете Сами убедиться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2015, 20:22

Выполнение процедуры в параллельном потоке
Простая задача, но у нас параллельного программирования не было и наверное не будет. Есть процедура вида type TPtr=^TPList; ...

Запуск функции в параллельном потоке
Пишу библиотеку работы с графикой на windows.h, для адекватной работы функции создания окна требуется запустить функцию с его созданием и...

Воспроизведение Gif анимации
Как сделать что бы GIF фаил играл, я вставляю а он стоит как картинка...

Воспроизведение gif анимации
Возможно ли воспроизведение gif анимации на java? пробовал прописать так, но я не удивлён что не получилось, моя java-FX же особенная XD ...

Воспроизведение gif-анимации
Добрый день. Не могу воспроизвести анимацию на Delphi 7. Находил статьи в интернете писали, что нужно добавить в uses GifImg, но при запуке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
92
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
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
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru