|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.01.2017, 12:50 | #1 |
Регистрация: 16.01.2017
Сообщений: 3
|
[РЕШЕНО] Безопасность InvokeRequired
Здравствуйте, есть у меня вопрос по потокам, решил наконец его задать, для понимания сути. C#. Если нам нужно обратиться к контролу, созданному в основном потоке, из фонового, рекомендуется выполнять следующее:
Код:
Данный фоновый поток может приостановиться после обращения к InvokeReqired с возвращением false и до Invoke, а после того, как продолжится выполнение, может получится так, что InvokeReqired стало true после некоторых событий в потоке контрола. И вообще могут на разных выполняться процессорах основной и фоновый, и InvokeReqired может сменится сразу после его прочтения в фоновом потоке без всяких его приоcтановок. Я прав? Сам я всегда юзаю Invoke без проверки InvokeReqired именно потому, что до сих пор так и не убежден в безопасности этого. Если я прав, стоит ли другую сделать защиту с помощью каких-то методов блокировки выполнения, или оставить всегдашний Invoke? Решение в следующем сообщении Последний раз редактировалось Вадим Мошев; 12.05.2018 в 18:57. |
16.01.2017, 13:13 | #2 | ||
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Он не будет false если вы вызвали из другого (не основного винформс) потока.
Он просто проверяет из какого потока вызван, можете просто сразу Invoke если этот код всегда выполняется в другом потоке. https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx Цитата:
Цитата:
Вообще обычно удобнее SynchronizationContext или в .NET 4.5 Progress<T>
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 16.01.2017 в 13:19. |
||
16.01.2017, 13:31 | #3 |
Регистрация: 16.01.2017
Сообщений: 3
|
Ох, как всё просто оказалось. Аж глупо) Спасибо. Внимательней надо читать msdn, я его читал, но не видел это, думал оно по другому работает.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Безопасность | Banananchik | Операционные системы общие вопросы | 2 | 28.02.2014 22:00 |
Безопасность БД | Sparky | Свободное общение | 18 | 17.10.2012 15:18 |
Безопасность | e_e_n | Безопасность, Шифрование | 40 | 03.09.2010 01:11 |
Безопасность | e_e_n | Безопасность, Шифрование | 11 | 04.07.2010 06:47 |
Безопасность | x_AN777 | Помощь студентам | 2 | 08.05.2010 23:30 |