Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
9 / 9 / 4
Регистрация: 07.12.2011
Сообщений: 120

Таймер на платформе WPF

16.12.2011, 14:58. Показов 14641. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все консольные примеры MSDN порой оказываются настоящей головоломкой при переходе к реальным объектам WPF. Например, мне потребовалось при нажатии кнопки Button1 с именем “Start” выводить текущее время в секундах на Label1 и останавливать процесс кнопкой Button2 с именем “Stop”. Время должно выводиться без разбиения на минуты и часы, в диапазоне от 0 до 3600сек. Помню, в VB6 это делалось одной строчкой кода. Очевидно, ввиду отсутствия таймера и опыта работы на платформе WPF эту задачку, несмотря на то, что перелопатил форумы и MSDN, решить не могу. За подсказку заранее благодарен.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2011, 14:58
Ответы с готовыми решениями:

Как сделать таймер (WPF)?
Собственно как его сделать?) В винформ всё понятно, а на WPF?

[WPF] Нажать на кнопку с задержкой. Таймер?
Хочу выполнить простую задачу, но нигде не могу найти того, что заработает в моем случае. В WPF приложении мне нужно автоматически...

Таймер и WPF
Есть приложения на WPF, и есть задача, которую нужно выполнять раз в 1 секунду. Для этого я использую system.threading.timer (или можно...

23
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
27.02.2026, 14:53
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Попробуйте из XAML обратиться к DI - Singleton.
1) предлагают использовать ObjectDataProvider (прямое обращение) с: ObjectType="{x:Type local:MyService}" MethodName="Instance" - но вы вроде говорили, что DataProvider немного пережиток прошдого
2) VMLocator:
C#
1
2
3
4
public class VMLocator
{
    public static MySingletonService MyService => App.ServiceProvider.GetService<MySingletonService>();
}
- его в Window.Resources и обращение к Path=MyService.MyProperty...
хотя можно и ваш пример изучить
3) и да, вы правы, - предлагают и к статическому свойству напрямую
XML
1
<TextBlock Text="{Binding Source={x:Static local:MyService.Instance}, Path=MyProperty}" />
=========
просто контроль и exception's из этих статических свойств , да ещё и в асинхронном environment'e, имеют свои недостатки и неудобства
Кликните здесь для просмотра всего текста
Static properties, particularly mutable ones, are generally discouraged in object-oriented programming due to several significant disadvantages related to testability, concurrency, flexibility, and code maintainability.
dogan-ucar.de
+2
The main disadvantages include:
- Difficult Unit Testing: Static properties create tight coupling between classes, making it difficult to isolate code for testing. Since static members belong to the class itself and not an instance, they cannot be easily mocked, stubbed, or replaced with test doubles (fake implementations) in a test environment, which hinders the use of dependency injection.
- Global, Mutable State: Static properties often introduce global state into an application, which can be modified from anywhere in the codebase. This makes the application's state unpredictable, leading to unexpected side effects, bugs that are difficult to trace, and a general lack of control over how the property is used.
- Concurrency Issues (Not Thread-Safe): In multi-threaded environments (like web applications), multiple threads can access and modify the same static property simultaneously. This leads to race conditions, inconsistent data, and unpredictable behavior unless explicit and careful synchronization (like locking) is implemented, which adds complexity.
- Reduced Flexibility and Extensibility: Static properties cannot be overridden, participate in polymorphism, or implement interfaces. - This makes it hard to change or extend their behavior in subclasses without a complete rewrite of the class, limiting the ability to adapt the code to future requirements (e.g., if you initially only need one of something, but later need two with different configurations).
- Memory Management and Leaks: Static variables remain in memory for the entire lifetime of the application or process (until the application domain unloads), as they are rooted by their class type and not subject to typical garbage collection cycles based on object scope. If they reference large objects or data structures that accumulate information (like caches), they can lead to memory leaks and increased memory usage.
- Breaks Object-Oriented Principles: Heavy reliance on static members is often considered an "anti-pattern" that moves away from the core tenets of object-oriented design, such as encapsulation, making the code less modular and cohesive.
Stack Overflow
+10
Appropriate uses for static properties are generally limited to truly application-wide, unchanging data like constants (e.g., Math.PI or configuration settings that don't change at runtime) or when implementing specific patterns like the Singleton pattern with careful consideration for its drawbacks.
Software Engineering Stack Exchange
+2
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2026, 19:14
Цитата Сообщение от JeyCi Посмотреть сообщение
просто контроль и exception's из этих статических свойств , да ещё и в асинхронном environment'e, имеют свои недостатки и неудобства
А какие могут быть исключения у таймера с одним свойством для вывода времени?

Я же не предлагаю всюду использовать только статические классы.
Есть "место для солнца" и классических синглтонов.
А вот DI для уровня XAML WPF уже под большим вопросом. В основном только в уже каких-то дополнительных, вспомогательных фреймворках в которых он уже интегрирован.
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
27.02.2026, 19:20
Цитата Сообщение от Элд Хасп Посмотреть сообщение
А вот DI для уровня XAML WPF уже под большим вопросом
встречаются много советов внедрять модель и IRepository как зависимость в VM (зачем сразу в XAML?)-- или это просто рекламный ход, маркетинговая раскрутка?... хотя видела и пример описания архитектуры (в каком-то блоге, не коде), где их внедряли в Service (наверно, просто оговорились и имели ввиду в Business Layer)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
27.02.2026, 19:29
Цитата Сообщение от JeyCi Посмотреть сообщение
встречаются много советов внедрять модель и IRepository как зависимость в VM
На уровне VM DI часто используют.
Я же про уровень View.
Зачем ради простого таймера внедрять DI в VM и потом ещё прокидывать его в View?
Есть ещё связки VM<->View организованные через DI. Но обычно их используют в каких фреймворках, в которых это часть инициализации встроенного локатора.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2026, 19:29

Таймер должен через время положить файл на БД. [Таймер]
Мне нужен таймер, а я не знаю как его делать именно, чтоб в конкретное время он сохранял информацию в файл. Чтобы он в конкретный период...

Поясните за таймер!) Или таймер на формах наследниках
Доброго. В проге есть основная форма и в процессе работы создается 1-2-3-4-5 форм наследников все одного типа, но вот в чем загвоздка, на...

WPF async void fun() для событий контролла. (MapCOntrol.WPF)
Задача: Отмечаем чекбокс элементы и рисуем их на карте. При нажатии на кнопку выполняется событие, где вызывается функция, в которой...

WPF команды и MVVM. Часть 1. [WPF, Элд Хасп]
Тема из цикла https://www.cyberforum.ru/wpf-silverlight/thread2384523.html Для использования и создания WPF команд в Net предусмотрен...

Открыть WPF внутри другого WPF окна
Добрый день! Имеется задача: В WPF окне (назовем его MainWindow.xaml с привязкой к MainWindow.xaml.cs), имеется элемент Frame...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru