C# 多任务。工厂';s
我真的很喜欢第三方物流。只需调用C# 多任务。工厂';s,c#,task-parallel-library,C#,Task Parallel Library,我真的很喜欢第三方物流。只需调用Task.Factory.StartNew()而不必担心任何事情,这是非常令人惊讶的 但是,有可能在同一个线程上运行多个工厂吗? 基本上,我希望有两个不同的队列,执行不同类型的任务。 一个队列处理类型A的任务,而第二个队列处理类型B的任务 如果队列A无事可做,它应该忽略队列B中的任务,反之亦然 这是否可能做到,而无需创建自己的队列,或为工厂运行多个线程 澄清我想做什么 我从网络设备读取数据。我想用这些数据做两件事,完全独立 我想登录到数据库 我想通过网络发送到另一
Task.Factory.StartNew()
而不必担心任何事情,这是非常令人惊讶的
但是,有可能在同一个线程上运行多个工厂吗?
基本上,我希望有两个不同的队列,执行不同类型的任务。
一个队列处理类型A的任务,而第二个队列处理类型B的任务
如果队列A无事可做,它应该忽略队列B中的任务,反之亦然
这是否可能做到,而无需创建自己的队列,或为工厂运行多个线程
澄清我想做什么
我从网络设备读取数据。我想用这些数据做两件事,完全独立
有时数据库日志会花费一些时间,我不希望网络发送因此而延迟。如果使用.NET 4.0,您可以使用线程队列定义自己的线程池:
(并发级别为1;请参阅)LimitedConcurrencyLevel TaskScheduler
(仅从对中取出独占计划程序;请参阅)ConcurrentExclusiveSchedulerPair
创建两个调度程序并将它们传递给相应的
StartNew
。或者使用这些调度程序创建两个任务工厂
,并使用它们创建和启动任务。您将需要一个自定义调度程序。工厂
只是构建任务
——调度器实际上将其排队。你想达到什么目的。也许有更直接的方法来实现它。@SriramSakthivelTask.Run
在.net 4.5之前不存在…@Gusdor很好,您可以主要通过调度程序指定所有必要的参数,或者使用一次定义的参数创建自己的工厂!这并不难,TPL的力量不在线程中。最强大的方面来自纯回调I/O。除非您真的受到CPU的限制,否则请坚持使用Task.Factory.fromsync