Многопоточность в .Net

6yrop

Правильно ли я делаю? Создаю в UI потоке объект, у которого есть метод выполняющий длительные расчеты. Затем запускаю этот метод в другом потоке. В процессе вычислений изменяется public свойство(точнее поле) класса, это поле показывает какая доля вычислений выполнена. В IU потоке я по таймеру считываю это поле и заношу его в значение ProgressBar.
Это всё работает, но вот правильно ли это?
P.S. Вообще, я думал над рзными способами сделать всё это; этот мне показался наиболее удобным.

Dasar

Правильно. (поле, надеюсь, lock-ишь...)
Можно еще тоже самое сделать без timer-а через Control.BeginInvoke

6yrop

1. Ну да, наверное надо локать, но и так работает.
2. Через Control.BeginInvoke в расчетном классе надо делать, а не хочется класс загромождать визуализацией (если я правильно это понимаю).

Dasar

1. Лучше локать.
2. В расчетном классе можно сделать event, на который и будет подписываться функция, которая и будет дергать Control.BeginInvoke
Оставить комментарий
Имя или ник:
Комментарий: