|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
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 Тоже не проходит. А мне нужно синхронизировать много переменных между потоками (таймерами) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 13:31 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
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 Возможно ли это в принципе? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 13:37 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
Slava777 Тоже не проходит. А что именно не проходит? Да, кста, для таких случаев необходимо, конечно, использовать "Interlocked.Increment". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 13:51 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
тут посмотрите https://www.vbforums.com/showthread.php?498387-Accessing-Controls-from-Worker-Threads ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 13:53 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
Slava777 Возможно ли это в принципе? Конечно, возможно, путей мильон. Самое простое - глобальную блокировку ставить допустимо?. Если да, то просто создай отдельную глобальную (статическую) переменную "static object locker = new object()" (извиняюсь за шарп, но в басике я только читатель), и используй конструкцию "lock(locker) { ... }". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 13:58 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
fkthat, извиняюсь проходит просто с переменной в модуле было Private вместо Public, поэтому и не проходило. Но чтобы связать контролы (например, labels) в формах основного потока с дополнительными потоками , для каждой метки создавать свой делегат ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 14:07 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
Konst_One, спасибо я так и предполагал. Но если контролов много, создавать делегаты для каждого? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 14:09 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
fkthat И еще, да, мышкой в дизайнере их не нарисуешь Таймер из пространства имен Winform Forms'А добавляется как элемент управления, на сколько я помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 14:23 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
Slava777 Konst_One, спасибо я так и предполагал. Но если контролов много, создавать делегаты для каждого? Если тебе просто нужно обратиться к контролу из другого потока, то ты это должен делать через Control.Invoke . Вообще я бы очень сильно задумался что все-таки не пора ли переходить на что-то более новое. Девелопить под 2.0 (а у вас ведь как я понял 2.0) на исходе 2020 года, это как полировать окаменевшее гамно динозавра. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 14:34 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
fkthat, спасибо, буду пробовать. Дело в том, что нужно делегировать еще и не стандартные контроллы, разработанные китайцами. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 14:50 |
|
Программирование таймеров в VB.Net
|
|||
---|---|---|---|
#18+
Slava777 Дело в том, что нужно делегировать еще и не стандартные контроллы, разработанные китайцами. А разницы никакой. Этот метод он в самом базовом классе Control и связан вообще не с самим контролом, а с поток в котором он создан. Например если контролы А и В созданы в одном потоке то из А.Invoke(,,,) можно вызывать не только А, но и В и вообще все контролы которые созданы в том же потоке. Обычно просто вызывают Invoke самой формы. Суть в том, что у тебя все контролы живут в одном "ГУИшном" потоке, когда ты из любого потока вызываешь метод Invoke любого из этих контролов, то код того делегата, который ты передаешь в метод Invoke будут выполнен уже не в вызывающем потоке, а в ГУИшном. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 15:59 |
|
|
start [/forum/topic.php?fid=20&msg=40010511&tid=1398454]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 263ms |
total: | 398ms |
0 / 0 |