我需要一个列表或集合,甚至是数据表。我想要一个进程将STRING添加到此列表中。 (这可以是用户单击按钮),同时线程在后台持续运行并处理和删除列表中的字符串。
简而言之,每当我将项目添加到list \ datatable或其他任何内容时,必须对它们进行处理,因为添加它们的过程要比实际处理它们快得多。
有关最佳方法的任何建议吗?
答案 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;的粗略描述。问题。每种可用的技术都可以用来解决它,但有些技术比其他技术更容易使用,取决于问题的背景。