如何使用C#中的线程安全列表?

时间:2019-05-06 12:26:35

标签: c# multithreading

因此,this问题询问如何对列表进行线程保存。总结起来,而不是使用

List<int[]> listName = new List<int[]>();

//you use:

SynchronizedCollection<int[]> listName = new SynchronizedCollection<int[]>();

但是我的问题是,如果我使用:

int[] returnArray = new int[listName[0].Length];

我无法使用索引访问这些元素。那我该如何访问它们?有没有办法在不失去任何功能的情况下使列表成为线程安全的?

也许我可以使用有限的功能,但我只需要4件事:读取最低和最高元素(仅那些元素),删除listName [0]并在顶部添加一些内容。因此,我实际上不需要中间的任何元素。但是有2个线程,根据线程的不同,它会在顶部添加一个新线程并采用它,或者删除最低的线程并采用新的最低线程。

正因为如此,我不能使用队列或堆栈,所以我全都没主意了。

现在的问题是,有满足这些要求的东西吗?

1 个答案:

答案 0 :(得分:3)

您可以使用lock从多个线程访问对象