Почему должен элементы UI всегда быть созданным/обновленным из потока UI?

Необходимо смотреть на то, как парни по getdropbox.com делают это для своего клиентского программного обеспечения, включая Linux. Это довольно хитро для взламывания и требует, чтобы некоторое довольно творческое дизассемблирование закончило механизмы защиты.

7
задан ThinkingStiff 30 June 2012 в 05:14
поделиться

3 ответа

Это навязано графической структурой, которая часто (но не всегда) предоставляется операционной системой.

По сути, делать все «должным образом потокобезопасным» неэффективно. Хотя маршалировать вызовы обратно в поток пользовательского интерфейса определенно сложно, это позволяет самому потоку пользовательского интерфейса обрабатывать события чрезвычайно быстро, не беспокоясь о блокировках и т. Д.

9
ответ дан 6 December 2019 в 09:21
поделиться

Делать весь UI потокобезопасным было бы очень дорого (медленно). Лучше возложить на программиста бремя синхронизации в (относительно редком) случае, когда потоку необходимо обновить пользовательский интерфейс.

6
ответ дан 6 December 2019 в 09:21
поделиться

Это потому, что инфраструктура пользовательского интерфейса была разработана таким образом. Теоретически возможно разработать структуру пользовательского интерфейса, которая будет по-настоящему многопоточной, но трудно избежать взаимоблокировок.

Грэм Гамильтон написал хорошую статью об этом со ссылкой на Swing, основную структуру пользовательского интерфейса Java.

5
ответ дан 6 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: