Виведення повідомлень під час роботи таймера у візуальні елементи на формі (з процедури ed) (
Виведення повідомлень під час роботи таймера у візуальні елементи на формі (з процедури Timer.Elapsed)
Статті / .NET / VB.NET /
Т.к. таймер працює в окремому потоці, виводити різні повідомлення безпосередньо в інтерфейсні контролі неможливо, наприклад, це всередині процедури події timer.Elapsed працювати не буде
Ви побачите таке повідомлення:
Cross-thread operation не valid: Control 'TextBox1' accessed from a thread other thhan the thread it was created on.

А як тоді виводити якусь інформацію про виконання процесу тощо?
Переглянула багато сайтів у мережі, але всі рішення були надто складні: часто пропонувалися рішення з використанням класу BackgroundWorker, а також інші з прикладами коду на C#.
Пропоную своє просте рішення на VB.NET (на Visual Studio 2010, .Net Framework 4):
Отже, у Вас є програма Windows Forms, є форма, а на ній текстбокс (Textbox1).

Ось що пишемо в коді:

Дублюю для копіювання:
Public Class FormTimer
Private tTimer As System.Timers.Timer 'власне таймер
Private strMsgText As String = "" 'для збирання повідомлень
Private intTimerCount As Integer = 0 'лічильник "тіків"
Private Sub FormTimer_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'при завантаженні форми створюємо таймер і даємо йому потрібні налаштування
tTimer = New System.Timers.Timer()
tTimer.Interval = 2000 'Інтервал 2с.
'зв'язуємо тимчасову подію таймера з потрібною процедурою
AddHandler tTimer.Elapsed, AddressOf TimerTick
Private Sub TimerTick(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
'подія, яка спрацьовує на кожен тиктаймера
strMsgText = "Таймет тик-так" & intTimerCount
Me.Invoke(New Action(AddressOf SetText))
Private Sub SetText()
'процедура, що виводить повідомлення у візуальний інтерфейс
TextBox1.Text &= Now.ToString & " - " & strMsgText & vbCrLf
У результаті отримуємо:

Сподіваюся комусь знадобиться :)
Жіночий календар версія 1.1 beta (Woman's calendar v1.1) – календар контрацепції та зачаття.