Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ConcurrentStack-从底部移除或等效功能_C#_.net_Multithreading_Concurrency - Fatal编程技术网

C# ConcurrentStack-从底部移除或等效功能

C# ConcurrentStack-从底部移除或等效功能,c#,.net,multithreading,concurrency,C#,.net,Multithreading,Concurrency,我一直在寻找我的问题的答案,但我还没有找到解决问题的好办法。 我想做的是基本上有一个并发集合,它有点像ConcurrentStack,但我需要能够从堆栈的底部删除项。这是因为我希望堆栈只有一定的长度,因此当集合太大时,任何旧项目都会从底部移除 并发堆栈可以很好地添加对象,但我不知道如何从底部删除它们 我还想用ConcurrentDictionary来记录添加的日期和存储的对象,然后根据最后的日期删除项目 任何帮助/想法都将不胜感激。我认为你需要不清楚他是否只想从“底部”移除,在这种情况下,这正是

我一直在寻找我的问题的答案,但我还没有找到解决问题的好办法。 我想做的是基本上有一个并发集合,它有点像ConcurrentStack,但我需要能够从堆栈的底部删除项。这是因为我希望堆栈只有一定的长度,因此当集合太大时,任何旧项目都会从底部移除

并发堆栈可以很好地添加对象,但我不知道如何从底部删除它们

我还想用ConcurrentDictionary来记录添加的日期和存储的对象,然后根据最后的日期删除项目


任何帮助/想法都将不胜感激。

我认为你需要

不清楚他是否只想从“底部”移除,在这种情况下,这正是他应该做的,或者如果他真的需要从两端移除,在这种情况下,他真正需要的是一个
ConcurrentDeque
(不存在)。已经看过了。这不是我想要的功能,因为我希望我添加的最新项目像堆栈一样位于顶部,然后被新添加的项目压下,直到最后,当前面有X个项目时,它就会被删除。想一想一个链表,我想在其中随时访问头部和尾部。不关心中间的内容,只要它们是按添加顺序添加的。@Michaela如果您总是删除“最旧”的项目,那么您确实需要一个
ConcurrentQueue
。是的,但我仍然无法访问集合的另一端。如果我向队列中添加一个项目,我希望能够访问该项目,并能够从另一端删除该项目。再次查看ConcurrentQueue后,我最终使用了它。为了获取最近(在队列末尾)添加的项目,我将队列复制到一个列表中(从而拍摄当前在其中的内容的快照),并拍摄最后一个。