|
1
2
您可能正在将对同一对象的多个引用添加到列表中。因此,当您更改对象时,列表中的所有内容都会受到影响,因为它们都指向同一个对象。 要解决这个问题,我建议使用不可变对象或 record 。因此,您不需要更改现有对象,而是使用请求的更改创建一个新对象。这巧妙地避免了此类问题,并有助于确保线程安全。 此外,正如评论中提到的,堆栈是后进先出(LIFO)。如果需要FIFO,请使用ConcurrentQueue。 此外,如果不编写多线程代码,则不需要concurrent*。关于多线程代码,我的标准建议是,只有在您熟悉风险以及如何减轻风险的情况下,才执行该操作。多线程因引起严重的、难以复制的错误而臭名昭著。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |