0

根据通常的 Thread 安全声明。

此类型的任何公共静态(在 Visual Basic 中为共享)成员都是线程安全的

这使Brushes.White线程安全但不是new SolidBrush(Color.White)

我的第一个问题是为什么,背面的技术差异是什么?

二、是否可以创建Brushes.White等线程安全的简单画笔?

4

1 回答 1

1

这是 99.9% 的所有 .NET 类的样板语言。很没用。画笔有一个内部不可变字段,当您设置画笔的 Color 属性时会检查它。与线程没有任何关系,它只是阻止您更改库存画笔的颜色(如 Brushes.White)。这当然会很糟糕。由于没有其他要修改的属性,巧合的是,这使得库存画笔线程安全。

您自己的 SolidBrush 也是线程安全的可能性相当大,GDI+ 有一些内置的内部锁定。例如,您可以让多个线程绘制到一个位图,只要它们是不同的位图。但是,没有明确记录它是线程安全的,因此您需要自行承担风险。这对锻炼毫无意义,在创建画笔后更改画笔的颜色没有多大意义。或者就此而言,让多个线程使用相同的画笔。刷子非常便宜,创建一个刷子只需要一微秒。

于 2011-10-07T13:22:35.543 回答