Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 1
Регистрация: 27.04.2013
Сообщений: 96

Не вызывается TimerCallback

02.06.2015, 21:30. Показов 3252. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
метод отрабатывает только при запуске программы, почему?
C#
1
2
TimerCallback time3 = new TimerCallback(getRealTime);
            System.Threading.Timer timer3 = new System.Threading.Timer(time3, null, 0, 100);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.06.2015, 21:30
Ответы с готовыми решениями:

Окно настройки принтера не вызывается через меню, но вызывается по кнопке
Доброго времени суток. Помогите разобраться. Подключаю к программе принтер, начал с вывода окна настроек принтера. Не могу понять, создал в...

При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О
Вот такой кодclass A { public: A(){} virtual ~A(){} }; class C { public:

Не вызывается OnCollisionEnter
Доброго времени суток, в общем, у меня взаимодействует коллайдер с другим коллайдером но вызова не происходит, все в видео, что не понятно...

15
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.06.2015, 21:40
Лучший ответ Сообщение было отмечено TatyanaYA как решение

Решение

Цитата Сообщение от TatyanaYA Посмотреть сообщение
метод отрабатывает только при запуске программы
Не может такого быть. У меня все работает как положено.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using MyTimer = System.Threading.Timer;
 
namespace Timer_Test {
    public partial class Form1 : Form {
        MyTimer timer = null;
        int i = 0;
        public Form1() {
            InitializeComponent();
            btnStartTimer.Click += new EventHandler(btnStartTimer_Click);
        }
 
        void btnStartTimer_Click(object sender, EventArgs e) {
            timer = new MyTimer((obj) => {
                label1.Invoke((Action)(() => { label1.Text = i++.ToString(); }));
            }, null, 0, 1000);
        }
    }
}
1
0 / 0 / 1
Регистрация: 27.04.2013
Сообщений: 96
02.06.2015, 21:48  [ТС]
insite2012, ну вот я прописываю в public Form1
C#
1
2
TimerCallback time3 = new TimerCallback(getRealTime);
System.Threading.Timer timer3 = new System.Threading.Timer(time3, null, 0, 100);
сработал метод при запуске и все
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.06.2015, 21:50
Лучший ответ Сообщение было отмечено TatyanaYA как решение

Решение

TatyanaYA, покажите код метода
Цитата Сообщение от TatyanaYA Посмотреть сообщение
getRealTime
1
0 / 0 / 1
Регистрация: 27.04.2013
Сообщений: 96
02.06.2015, 21:54  [ТС]
insite2012, ваш метод подошел, работает, спасибо.
а можете объяснить, если я таким способом создам несколько таймеров, как они будут работать, если у них, например, одинаковый период вызова?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.06.2015, 21:55
Цитата Сообщение от TatyanaYA Посмотреть сообщение
я прописываю в public Form1
И да, попробуйте вынести ваш код из конструктора в обработчик события FormLoad. Возможно, проблема в этом.

Добавлено через 36 секунд
Цитата Сообщение от TatyanaYA Посмотреть сообщение
как они будут работать
Как обычно, каждый по своему.
1
0 / 0 / 1
Регистрация: 27.04.2013
Сообщений: 96
02.06.2015, 21:56  [ТС]
insite2012, т.е. они не будут останавливать один другого?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.06.2015, 21:58
Лучший ответ Сообщение было отмечено TatyanaYA как решение

Решение

Цитата Сообщение от TatyanaYA Посмотреть сообщение
т.е. они не будут останавливать один другого?
если они никак не взаимодействуют (через к-либо переменные) - не будут. Таймер (именно тот, о котором идет речь) работает в отдельном потоке выполнения (используя пул потоков CLR), и потому друг от друга никак не зависят.
1
0 / 0 / 1
Регистрация: 27.04.2013
Сообщений: 96
02.06.2015, 21:59  [ТС]
insite2012, спасибо большое за ответ
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.06.2015, 22:00
Цитата Сообщение от TatyanaYA Посмотреть сообщение
спасибо большое за ответ
Да не за что, на здоровье.
0
0 / 0 / 1
Регистрация: 27.04.2013
Сообщений: 96
02.06.2015, 22:02  [ТС]
insite2012, все равно, когда делаю вот так, методы не работают, может я делаю что-то не так?
C#
1
2
3
4
5
MyTimer timer1 = new MyTimer((obj) =>
{
time.Invoke((Action)(() => getRealTime()));
}, null, 0, 1000);
MyTimer timer2 = new MyTimer((obj) => setDataInsert(), null, 0, 60000);
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.06.2015, 22:04
Цитата Сообщение от TatyanaYA Посмотреть сообщение
может я делаю что-то не так?
Покажите полный код.
0
0 / 0 / 1
Регистрация: 27.04.2013
Сообщений: 96
02.06.2015, 22:05  [ТС]
insite2012,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public Form1()
        {
MyTimer timer1 = new MyTimer((obj) =>
            {
                time.Invoke((Action)(() => getRealTime()));
            }, null, 0, 1000);
            MyTimer timer2 = new MyTimer((obj) => { Invoke((Action)(() => setDataInsert())); }, null, 0, 60000);
        }
 
private void getRealTime()
        {
            time.Text = DateTime.Now.ToString("dd MMMM yyyy  HH:mm:ss");
        }
 
private void setDataInsert()
        {
            string vUrl1 = "", vUrl2 = "", vUrl3 = "";
            vUrl1 = DataBase.selectDataCol("IP", "Servers", 1);
            vUrl2 = DataBase.selectDataCol("IP", "Servers", 2);
            vUrl3 = DataBase.selectDataCol("IP", "Servers", 3);
            if (vUrl1 != "")
            {
                ParseData parseData = new ParseData();
                string str = parseData.getHtml(vUrl1);
                String[] mas = parseData.getValue(str);
                DataBase.insertData(gNameTable, mas, 1);
            }
            if (vUrl2 != "")
            {
                ParseData parseData = new ParseData();
                string str = parseData.getHtml(vUrl2);
                String[] mas = parseData.getValue(str);
                DataBase.insertData(gNameTable, mas, 2);
            }
            if (vUrl3 != "")
            {
                ParseData parseData = new ParseData();
                string str = parseData.getHtml(vUrl3);
                String[] mas = parseData.getValue(str);
                DataBase.insertData(gNameTable, mas, 3);
            }
        }
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.06.2015, 22:08
TatyanaYA, я же вам сказал:
Цитата Сообщение от insite2012 Посмотреть сообщение
попробуйте вынести ваш код из конструктора в обработчик события FormLoad. Возможно, проблема в этом.
Добавлено через 1 минуту
TatyanaYA, и да, не следует забывать, что данный таймер работает в отдельном потоке, следовательно, для доступа к контролам интерфейса требуется явный маршалинг в поток UI.
Так же, как я понял, ваш таймер (в обработчике) выполняет довольно длительный код. Думаю, что в данном случае вам. скорее всего, нужен не таймер, а явная работа с потоками. Так было бы оптимальнее, ятд.
0
0 / 0 / 1
Регистрация: 27.04.2013
Сообщений: 96
02.06.2015, 22:09  [ТС]
insite2012, вынесла, все также не работает. т.е. срабатывает при запуске и все

Добавлено через 1 минуту
insite2012, хм...простите, а можно как-нибудь объяснить то, что вы сказали для "особо одаренных"?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.06.2015, 22:15
Цитата Сообщение от TatyanaYA Посмотреть сообщение
можно как-нибудь объяснить
Хммм... Ну если кратко - форма работает в однопотоковом апартаменте (STA), это унаследовано от Win32 кода, и потому обращаться ко всем ее (формы) элементам можно только из того потока, в котором они были созданы (то есть из потока формы (основного, который запускается в методе Main() точки входа).
Для доступа к элементам формы из других потоков необходим маршалинг.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.06.2015, 22:15
Помогаю со студенческими работами здесь

Не вызывается функция
Здравствуйте. Не работает условие в цикле. Просто не вызывается функция prior. Как исправить? int prior(char s,char qu) { switch (s)...

Перегрузка == не вызывается
#include <iostream> using std::cout; using std::endl; #include <conio.h> template< typename T > class Equal { ...

Вызывается ли Dispose?
есть disposable объекты, типа stream... так вот вопрос такой если написать вот так например: var serializer = new...

IncomingConnection не вызывается
заголовок сервера #ifndef SERVER_H #define SERVER_H #include <QTcpServer> #include <QDebug> #include "och_thread.h" ...

Не вызывается метод
Здравствуйте! Изучаю язык C++, начал осваивать ООП. Для лучшего понимания решил написать программу, где массив задается через класс. Для...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru