Виведення повідомлень під час роботи таймера у візуальні елементи на формі (з процедури 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) – календар контрацепції та зачаття.