Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Katrin
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 27
1

Потокобезопасный метод

27.06.2015, 10:23. Просмотров 449. Ответов 6
Метки нет (Все метки)

Обозначу суть проблемы. Есть кнопка, по нажатию которой, вызывается метод, работающий с элементами формы в другом потоке. Т.к. обращений к форме очень много, на написание метода Invoke() для каждой попытки доступа к элементу формы уйдет огромное количество времени. Есть ли альтернативное решение задачи или придется писать каждый раз новый Invoke?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2015, 10:23
Ответы с готовыми решениями:

Потокобезопасный List
Здравствуйте! Понадобился мне список, которым я могу управлять (доступ +...

Потокобезопасный код
Всем добрый день! Мне нужно разработать свойство, которое разрешает...

Потокобезопасный вызов метода
Признаюсь, потокобезопасность и делегаты для меня тёмный лес, поэтому...

Написать три алгоритма решения СЛАУ: Метод прогонки, метод квадратных корней, метод вращений
Начал писать курсовую. Нужно написать три алгоритма решения СЛАУ: прогонки,...

Потокобезопасный ли метод? ->
Добрый день! Кто скажет, потокобезопасный ли следующий код: ...

6
XRoy
861 / 711 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
27.06.2015, 10:35 2
Katrin,
Используйте BackgroundWorker, и по событию ProgressChanged обращайтесь к форме
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
0
ksk
613 / 481 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
27.06.2015, 10:54 3
Katrin, WinForms или WPF ?
В WinForms можно пользоваться типом SynchronizationContext

И по сути - обновление UI не следует делать более часто, чем юзер может успеть разглядеть (если это не анимация).
0
Storm23
Эксперт .NETАвтор FAQ
6486 / 3909 / 1439
Регистрация: 11.01.2015
Сообщений: 5,074
Записей в блоге: 32
27.06.2015, 11:05 4
Цитата Сообщение от Katrin Посмотреть сообщение
Обозначу суть проблемы.
Суть вашей проблемы в том, что у вас нет модели данных. Контролы - они для того что бы на них смотрел юзер, а не для того что бы "метод работал с ними в другом потоке". То, с чем должна работыть программа - называется модель данных. Контролы - лишь для отображения модели. Соответственно ваша проблема надумана. Сделайте нормальную архитектуру и не нужны будут извращения.
(И да, кстати если у вас повсеместно Invoke, то фактически вы работаете в главном потоке а не в отдельном).
0
Katrin
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 27
27.06.2015, 14:11  [ТС] 5
Мне не нужно изменять значения, а лишь считывать, например, из TextBox'a. Что в этом случае?
0
Rius
Эксперт .NET
5088 / 3304 / 809
Регистрация: 25.05.2015
Сообщений: 10,169
Записей в блоге: 11
Завершенные тесты: 4
27.06.2015, 14:47 6
То же самое. При изменении сохранить данные в модель или ещё куда. И уже туда обращаться из потока.
0
Storm23
Эксперт .NETАвтор FAQ
6486 / 3909 / 1439
Регистрация: 11.01.2015
Сообщений: 5,074
Записей в блоге: 32
27.06.2015, 15:41 7
Цитата Сообщение от Katrin Посмотреть сообщение
Мне не нужно изменять значения, а лишь считывать, например, из TextBox'a. Что в этом случае?
Ваш метод в отдельном потоке не покладая рук, со скоростью 1.6 млрд операций в секунду считывает значения из текстбокса, которые вручную вводит юзер? Вам не смешно?
0
27.06.2015, 15:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2015, 15:41

В классе Student определите метод InitAr (Метод должен быть статическим)
Здравствуйте. Помогите пожалуйста разобраться в задании: a. В классе Student...

Транспортная задача. Метод северо-западного угла и метод минимального элемента.
Метод северо-западного угла и метод минимального элемента. Задание: Найти...

Как вызвать метод info в метод Main и с какими параметрами?
я новичок в C#, так что не судите строго.. Я не думаю что это кому-то покажется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru