powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Программирование таймеров в VB.Net
11 сообщений из 36, страница 2 из 2
Программирование таймеров в VB.Net
    #40010477
Slava777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat, хорошо пуст без всяких контролов на форме. Например так
...................
Private Sub t3_tic(ByVal sender As System.Object, ByVal e As System.EventArgs)
check = check + 1
End Sub

Module Module1
Private check As Integer
End Module
Тоже не проходит. А мне нужно синхронизировать много переменных между потоками (таймерами)
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010479
Slava777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat, мне нужно синхронизировать большой объем переменных с основного потока (проект с формами) с другими потоками. Где то такое:
Module Module1
Public T45(10), TU45(10), iu45(10), ipar_f, t_diam As Integer
Public T60(10), TU60(10), iu60(10), ireg, ipar_i As Integer
Public ib45, i45ch, ib60, i60ch, it, itt, ipar_ch As Integer
Public izap, irab, iost, idi, icalc, ipar, ipusk, zagr60 As Integer
Public i_ch_rab_ost, i_ch_ost_zap, i_ch_zap_ost, i_ch_zap_rab, i_ch_rab_zap As Integer
Public ostanov, zapravka, rabota, pus60, pus60_m, pusk60, pusk60_m As Integer
Public pus45, pus45_m, pusk45, pusk45_m, idiam, nt, nc_d As Integer
Public AO(4), dv, dw60v, dw60e As Double
Public DI(9, 8), DDO(9, 8), DII(9, 8), DDOO(9, 8), id, noxl1, noxl2, noxl3 As Integer
Public ixd(315), iyd(315), ixt(84), iyt(84), ixc(84), iyc(84), ixp(48), iyp(48)
Public spar(24), sd As String
Public par_t(25), w60, w45, diam, diam_av, diam_o, a60, a60o, a45, a45o As Double
Public v_lin, sum_diam, p_err, p_erro, i_err, d_err, s_err, pid4 As Double
End Module

Возможно ли это в принципе?
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010484
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava777
Тоже не проходит.

А что именно не проходит?

Да, кста, для таких случаев необходимо, конечно, использовать "Interlocked.Increment".
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010487
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010489
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava777
Возможно ли это в принципе?

Конечно, возможно, путей мильон. Самое простое - глобальную блокировку ставить допустимо?. Если да, то просто создай отдельную глобальную (статическую) переменную "static object locker = new object()" (извиняюсь за шарп, но в басике я только читатель), и используй конструкцию "lock(locker) { ... }".
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010492
Slava777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat, извиняюсь проходит просто с переменной в модуле было Private вместо Public, поэтому и не проходило. Но чтобы связать контролы (например, labels) в формах основного потока с дополнительными потоками , для каждой метки создавать свой делегат ?
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010493
Slava777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, спасибо я так и предполагал. Но если контролов много, создавать делегаты для каждого?
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010500
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
И еще, да, мышкой в дизайнере их не нарисуешь

Таймер из пространства имен Winform Forms'А добавляется как элемент управления, на сколько я помню.
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010502
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava777
Konst_One, спасибо я так и предполагал. Но если контролов много, создавать делегаты для каждого?

Если тебе просто нужно обратиться к контролу из другого потока, то ты это должен делать через Control.Invoke . Вообще я бы очень сильно задумался что все-таки не пора ли переходить на что-то более новое. Девелопить под 2.0 (а у вас ведь как я понял 2.0) на исходе 2020 года, это как полировать окаменевшее гамно динозавра.
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010511
Slava777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat, спасибо, буду пробовать. Дело в том, что нужно делегировать еще и не стандартные контроллы, разработанные китайцами.
...
Рейтинг: 0 / 0
Программирование таймеров в VB.Net
    #40010551
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slava777
Дело в том, что нужно делегировать еще и не стандартные контроллы, разработанные китайцами.

А разницы никакой. Этот метод он в самом базовом классе Control и связан вообще не с самим контролом, а с поток в котором он создан. Например если контролы А и В созданы в одном потоке то из А.Invoke(,,,) можно вызывать не только А, но и В и вообще все контролы которые созданы в том же потоке. Обычно просто вызывают Invoke самой формы. Суть в том, что у тебя все контролы живут в одном "ГУИшном" потоке, когда ты из любого потока вызываешь метод Invoke любого из этих контролов, то код того делегата, который ты передаешь в метод Invoke будут выполнен уже не в вызывающем потоке, а в ГУИшном.
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Программирование таймеров в VB.Net
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]