Щетки резьбовые предохранительные
Согласно обычному заявлению о безопасности ниток.
Любые открытые статические (Shared в Visual Basic) члены этого типа являются потокобезопасными
Что делает Brushes.White
потокобезопасен, но не new SolidBrush(Color.White)
Мой первый вопрос: почему технические различия в задней части?
Во-вторых, могут ли быть созданы безопасные потоки, такие как Brushes.White?
1 ответ
Это шаблонное словоблудие для 99,9% всех классов.NET. Довольно бесполезно. Кисть имеет внутреннее неизменяемое поле, оно проверяется при установке свойства "Кисть". Не имеет ничего общего с резьбой, он просто предотвращает изменение цвета стандартной кисти (например, Brushes.White). Что, конечно, было бы довольно плохо. Если нет другого свойства, которое можно изменить, это делает чистую кисть поточно-ориентированной по совпадению.
Вероятность того, что ваш собственный SolidBrush также поточнобезопасен, GDI+ имеет встроенную внутреннюю блокировку. Например, вы можете сделать так, чтобы несколько потоков отображались в растровом изображении, если они являются разными растровыми изображениями. Однако явно не задокументировано, что оно поточно-ориентировано, поэтому вы делаете это на свой страх и риск. Осуществлять это бессмысленно, просто нет смысла менять цвет кисти после ее создания. Или, если на то пошло, чтобы иметь несколько нитей, используйте одну и ту же кисть Кисть очень дешевая, ее создание занимает всего микросекунду.