11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
1

Таймер отдельным потоком

24.12.2016, 16:55. Показов 1174. Ответов 14
Метки нет (Все метки)

Подскажите пожалуйста, на форме есть пикчер бох в котором идет анимация.
Необходимо сделать таймер. После которого произойдет действие.
Обычный таймер не работает как я понимаю из-за одинакового потока.
Перелазил гугл, ничего работающего не нашел. Всё выдает ошибку.
Подскажите, как можно организовать такой таймер?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2016, 16:55
Ответы с готовыми решениями:

Выполнение подключения отдельным потоком
Доброго времени суток умные люди. Столкнулся с проблемой. Есть программа в которой идет подключение...

Фокус на TextBox внутри формы отдельным потоком
Доброй ночи, есть форма, внутри нее браузер. Допустим захожу на Вконтакте и отрываю диалог и хочу...

Выполнение определенной команды отдельным процессом и потоком
Подскажите пожалуйста как задать выполнение определенной команды отдельным процессом и потоком?????...

Запуск отдельным потоком
Имеется стандартный шаблон mainwindow mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H...

14
25 / 25 / 5
Регистрация: 10.01.2016
Сообщений: 52
24.12.2016, 18:55 2
Почему именно не работает? Напиши код таймера + ошибки, что он выдаёт.
0
1 / 1 / 0
Регистрация: 18.12.2016
Сообщений: 5
24.12.2016, 21:38 3
Скидывай свой код, по другому никто тебе не скажет, что у тебя работает не так
0
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
24.12.2016, 22:38  [ТС] 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System.Windows.Forms;
using System.Threading;
 
namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        private static Timer aTimer;
        public Form2()
        {
            
            InitializeComponent();
 
            TimerCallback timeCB = new TimerCallback(PrintTime);
            Timer time = new Timer(timeCB, null, 0, 1000);
Ошибка неоднозначности ссылки на Timer time = new Timer(timeCB, null, 0, 1000);
Из-за того что добавлена библиотека using System.Windows.Forms;, а убрать эту библиотеку не могу, т.к. windows form
0
972 / 867 / 349
Регистрация: 26.04.2012
Сообщений: 2,647
24.12.2016, 22:43 5
Rider98, ну так укажите пространство имен явно.
C#
1
System.Threading.Timer time = new System.Threading.Timer(timeCB, null, 0, 1000);
Только чем вас не устроил винформовский таймер? Или асинхронность?
1
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
24.12.2016, 22:55  [ТС] 6
Цитата Сообщение от EvilFromHell Посмотреть сообщение
Только чем вас не устроил винформовский таймер? Или асинхронность?
Из-за анимации в пикчер бох не работает
0
972 / 867 / 349
Регистрация: 26.04.2012
Сообщений: 2,647
24.12.2016, 23:01 7
Rider98, я не понимаю, а как вы заставите работать пикчербокс, запустив таймер из Treading (напомню, что GUI работает в одном потоке и обращаться к пикчабоксу из другого потока вы не сможете)? Что вы с ним делаете-то?
0
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
24.12.2016, 23:06  [ТС] 8
Цитата Сообщение от EvilFromHell Посмотреть сообщение
я не понимаю, а как вы заставите работать пикчербокс, запустив таймер из Treading (напомню, что GUI работает в одном потоке и обращаться к пикчабоксу из другого потока вы не сможете)? Что вы с ним делаете-то?
Пикчер бох показывает анимацию (gif файл)
После показа анимации необходимо перейти на следующую форму.
Т.к. в одном потоке таймеры не срабатывают решил сделать таймер новым потоком, но опять в тупик вошел.
После таймером из Treading вызываю функцию, которая должна свернуть форму (this.Hide), но пишет, ошибку, что обращение идет не из того потока...
0
972 / 867 / 349
Регистрация: 26.04.2012
Сообщений: 2,647
24.12.2016, 23:15 9
Rider98, что-то я не пойму, показ той анимации полностью вешает GUI поток? С анимацией в GIF не имел дело, но что-то мне кажется это странным. Проверю. И что вам таки мешает закрыть форму, когда поток уже не занят?
0
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
24.12.2016, 23:20  [ТС] 10
Цитата Сообщение от EvilFromHell Посмотреть сообщение
что-то я не пойму, показ той анимации полностью вешает GUI поток? С анимацией в GIF не имел дело, но что-то мне кажется это странным. Проверю. И что вам таки мешает закрыть форму, когда поток уже не занят?
Поток полностью занят, не проходит таймер.
А можно как-то остановить пикчер после первого показа анимации?
0
972 / 867 / 349
Регистрация: 26.04.2012
Сообщений: 2,647
24.12.2016, 23:28 11
Цитата Сообщение от Rider98 Посмотреть сообщение
Поток полностью занят, не проходит таймер.
Только что убедился, что это не так. GIF анимация в Picturebox поток не занимает.
0
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
24.12.2016, 23:30  [ТС] 12
Цитата Сообщение от EvilFromHell Посмотреть сообщение
Только что убедился, что это не так. GIF анимация в Picturebox поток не занимает.
А по какой причине может не срабатывать таймер?
На форме только пикчербох, и все.
0
972 / 867 / 349
Регистрация: 26.04.2012
Сообщений: 2,647
24.12.2016, 23:33 13
Rider98, ну это у вас надо спросить, чем именно вы заняли GUI поток. Мне отсюда не видно
1
11 / 11 / 12
Регистрация: 06.05.2015
Сообщений: 421
24.12.2016, 23:38  [ТС] 14
Цитата Сообщение от EvilFromHell Посмотреть сообщение
ну это у вас надо спросить, чем именно вы заняли GUI поток. Мне отсюда не видно
Спасибо за помощь, буду разбираться
0
24 / 24 / 13
Регистрация: 01.07.2016
Сообщений: 105
24.12.2016, 23:53 15
Rider98, А в чем, собственно проблема?

C#
1
2
3
4
5
6
7
8
9
10
11
int sec = 0;
        public Form1()
        {
            InitializeComponent();
            timer1.Start();  //Интервал = 1000мс
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (sec++ == 5) Close();
        }
Добавлено через 7 минут
Может, конечно, и глупость счас сморожу, но почему бы не добавить стандартный таймер, проставить ему нужный интервал и забить действия в обработчик timer_tick?

Добавлено через 1 минуту
Цитата Сообщение от Rider98 Посмотреть сообщение
Обычный таймер не работает как я понимаю из-за одинакового потока.
Из-за одного потока с чем?
С PictureBox-ом?
Не понимаю

PictureBox никак не мешает работе таймера же.
Вложения
Тип файла: zip Gif_and_timer.zip (1.08 Мб, 3 просмотров)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2016, 23:53

Сообщение отдельным потоком
Thread ttt = new Thread(delegate() { MessageBox.Show("Hello!"); }); просьба перевести на C++\CLR...

Выполнить цикл отдельным потоком
У меня есть программа, которая выполняет цикл. Но вот проблема, программа начинает исполнять цикл и...

Запуск формы отдельным потоком
Доброго времени суток! С показом формы пользователю все просто form2.show А как...

Запуск страницы отдельным потоком
Ребятушки, срочно нужна ваща помощь. Есть проект, основной на MVC и т.п. Так вот, я создал асп...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.