C#Threading - 一个线程添加到list \ datatable而另一个线程删除

时间:2015-10-19 12:11:45

标签: c# multithreading

我需要一个列表或集合,甚至是数据表。我想要一个进程将STRING添加到此列表中。 (这可以是用户单击按钮),同时线程在后台持续运行并处理和删除列表中的字符串。

简而言之,每当我将项目添加到list \ datatable或其他任何内容时,必须对它们进行处理,因为添加它们的过程要比实际处理它们快得多。

有关最佳方法的任何建议吗?

1 个答案:

答案 0 :(得分:1)

这是ActionBlock类开箱即用的。您发布到块中的任何内容都将由您在创建块时提供的lambda进行排队和处理:

var myBlock = new ActionBlock<string>(data=>
{ 
        Console.WriteLine(data);
});
...
myBlock.Post("some string");

ActionBlock是TPL DataFlow Library的一部分,可以NuGet package

的形式提供

请注意,.NET有许多并发集合(例如ConcurrentQueue,BlockingCollection)和处理模型(Tasks,PLINQ,Dataflow,Reactive)。你问的是对生产者/消费者&#34;&#34;生产者/消费者&#34;的粗略描述。问题。每种可用的技术都可以用来解决它,但有些技术比其他技术更容易使用,取决于问题的背景