|
0 / 0 / 0
Регистрация: 15.04.2013
Сообщений: 20
|
||||||
.NET 4.x Timer для нестатического метода19.04.2016, 04:13. Показов 2903. Ответов 9
Метки нет (Все метки)
Доброй ночи! Не могу разобраться с таймером. Имеется вот такой код (прошу прощения за размер). Нужно запускать метод Temp через определенные промежутки времени или по расписанию. Но при попытке создания таймера/делегата/события сталкиваюсь с основной проблемой - компилятор требует задать метод как static, но это не вариант. Кто может подсказать, как реализовать это? Все поиски в интернете дают решение только по статическим методам.
0
|
||||||
| 19.04.2016, 04:13 | |
|
Ответы с готовыми решениями:
9
Для нестатического метода требуется ссылка на объект Для нестатического метода требуется ссылка на объект
|
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
|||||||
| 19.04.2016, 08:11 | |||||||
|
Если таймер создается в статическом методе Main, то ругань компилятора совершенно логична. Чтобы запустить не статический метод класса, нужен экземпляр этого класса. В статическом же методе экземпляра класса нет. Кто должен вызывать этот метод? Вызвать не статический метод в статическом можно только имея экземпляр класса
0
|
|||||||
|
9 / 9 / 13
Регистрация: 15.03.2016
Сообщений: 32
|
||||||
| 19.04.2016, 08:37 | ||||||
|
попробуй таким способом:
0
|
||||||
|
Master of Orion
|
|
| 19.04.2016, 11:42 | |
|
xackep, вы в методе используете ссылку this? нет? Тогда делайте static и все будет нормально. Вы НИГДЕ не инстанцируете var program = new Program(), следовательно можно спокойно всё делать статикой.
Добавлено через 30 секунд _kda, зачем в таймере еще и таски создавать?.. И кстати в таком случае его не получится остановить.
0
|
|
|
0 / 0 / 0
Регистрация: 15.04.2013
Сообщений: 20
|
||||||
| 19.04.2016, 12:41 [ТС] | ||||||
|
Psilon, по идее его не нужно будет останавливать. Это приложение должно постоянно работать, чтобы снимать данные с датчика и записывать в БД.
jetyb, А что такое DoWork? Если я добавляю
А если создать метод для тамера, который будет будет запускать метод Temp? Это может сработать? Тогда в main я только создам новый объект таймера и дальше он уже будет постоянно работать, как мне надо.
0
|
||||||
|
Master of Orion
|
|
| 19.04.2016, 12:51 | |
|
xackep, в чем связь, сколько приложение работает?.. Ну работает себе пока не закроете и ладно. Статика то тут что поменяет?..
Алсо, для таких вещей придумали такую штуку, как виндовые сервисы, которые как раз и отвечают за постоянную работу, даже автозагрузку настроить можно.
0
|
|
|
0 / 0 / 0
Регистрация: 15.04.2013
Сообщений: 20
|
||||||
| 19.04.2016, 13:28 [ТС] | ||||||
|
Psilon, по идее на линуксе должно пахать круглосуточно, 7 дней в неделю и так далее... Пока сам не закроешь или не выключишь машинку, т.е. в идеальном варианте - до скончания века)
Объявил метод статическим, сам по себе вроде работает, только таймер все равно не хочет. Мой метод должен принимать 1 или 2 параметра, в зависимости от разновидности таймера. Но я не понимаю, зачем мне это нужно и куда использовать эти параметры. Если я их просто объявляю
Хотя все равно на всякий случай хотелось бы найти решение для нестатического метода...
0
|
||||||
|
Master of Orion
|
|
| 19.04.2016, 13:34 | |
|
xackep, Конечно заканчивает, таймер ведь работает в другом потоке. Если делаешь консольку, то добавляй в конце Console.ReadKey(), когда пользователь нажмет кнопку программа завершится.
0
|
|
|
0 / 0 / 0
Регистрация: 15.04.2013
Сообщений: 20
|
||||||
| 19.04.2016, 14:04 [ТС] | ||||||
|
Psilon, я, возможно, в другую степь уже лезу... Но если надо, чтобы приложение работало как служба? Т.е. мне тогда не нужна консоль, просто в фоне будет получать данные, записывать их в БД и если что - отправлять оповещение на почту (с этим я сам позже разберусь).
А если я использую вот такую конструкцию
0
|
||||||
|
Master of Orion
|
||||||
| 19.04.2016, 15:35 | ||||||
|
xackep, ну логично. Во-первых приложение сразу завершиться, ибо таймер запускает фоновый поток, который автоматически остановится при завершении главного (а после запуска таймера в мейне, очевидно, ничего нет и он завершится). Во-вторых как настроить приложение как службу - в винде элементарно. В линуксе - хз. По идее не сильно сложнее, но никогда таким не занимался.
Ну и да, чтобы в консольном случае приложение сразу же не завершилось (и таймер не остановился) нужно добавить 2 строки
Ну и я по-возможности стараюсь использовать не этот таймер (он слишком низкоуровневый), а System.Timers.Timer. Он проще, но как правило такой гибкости какую дает трединговый таймер и не нужно.
1
|
||||||
| 19.04.2016, 15:35 | |
|
Помогаю со студенческими работами здесь
10
Для нестатического поля, метода или свойства требуется ссылка на объект
Для нестатического поля, метода или свойства требуется ссылка на объект
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита табличной части. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|