Щетки резьбовые предохранительные - PullRequest
0 голосов
/ 07 октября 2011

Согласно обычному заявлению о безопасности ниток.

Любые открытые статические (Shared в Visual Basic) члены этого типа потокобезопасный

Что делает Brushes.White потокобезопасным, но не new SolidBrush(Color.White)

Мой первый вопрос: почему технические различия в задней части?

Во-вторых, могут ли быть безопасны многопоточные простые кисти, такие как Brushes.White?

1 Ответ

1 голос
/ 07 октября 2011

Это шаблонное словоблудие для 99,9% всех классов .NET. Довольно бесполезно. Кисть имеет внутреннее поле immutable , оно проверяется при установке свойства Color кисти. Не имеет ничего общего с резьбой, он просто предотвращает изменение цвета стандартной кисти (например, Brushes.White). Что, конечно, было бы довольно плохо. Если нет другого свойства, которое можно изменить, это делает стрижку кисти поточно-безопасной по совпадению.

Вероятность того, что ваш собственный SolidBrush также поточнобезопасен, GDI + имеет встроенную внутреннюю блокировку. Например, вы можете сделать так, чтобы несколько потоков отображались в растровом изображении, если они являются разными растровыми изображениями. Однако явно не задокументировано, что оно поточно-ориентировано, поэтому вы делаете это на свой страх и риск. Осуществлять это довольно бессмысленно, просто нет смысла менять цвет кисти после ее создания. Или, если на то пошло, чтобы иметь несколько нитей, используйте одну и ту же кисть. Кисть очень дешевая, ее создание занимает всего микросекунду.

...