根据通常的线程安全声明。
此类型的任何公共静态(在Visual Basic中为Shared)成员都是 线程安全
这使得Brushes.White
线程安全,但不是new SolidBrush(Color.White)
我的第一个问题是为什么,后面的技术差异是什么?
其次,可以创建线程安全的简单画笔,例如Brushes.White吗?
答案 0 :(得分:1)
这是所有.NET类的99.9%的样板文字。相当无用。画笔具有内部不可变字段,在设置画笔的Color属性时会检查它。与线程无关,它只是阻止您更改库存刷的颜色(如Brushes.White)。哪个当然是非常糟糕的。由于没有其他财产可以修改,这使得库存刷头巧合。
您自己的SolidBrush也是线程安全的,但是GDI +内置了一些内部锁定。例如,您可以将多个线程绘制到位图,只要它们是不同的位图即可。但是,没有明确记录它是线程安全的,所以你自己承担风险。这对于锻炼来说是毫无意义的,在创建它之后改变画笔的颜色是没有多大意义的。或者就此而言,让多个线程使用相同的画笔。刷子非常便宜,只需一微秒即可创建一个。