多线程,任务工厂中如何创建连续任务,如下代码...

junjian8811 2017-12-02 02:45:02

TaskFactory taskFactory = new TaskFactory();
taskFactory.StartNew(() => StartWorkOut(task.JQ));
taskFactory.StartNew(() => StartWorkIn(task.JQ));

现在我想执行完StartWorkOut任务后,然后执行StartWorkIn任务。

Task我知道有个ContinueWith方法。
TaskFactory 里怎么实现??????
...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
一个人既可以写 Task.Run(()=>a()),也可以写 Task.Run(()=>b()),但是假设他不会写Task.Run(()=>{ a(); b()}); 那就肯定是有一大堆的设计都不能从需求出发来快速编程,而满脑子只是套用别人的。这是一个普遍现象。
  • 打赏
  • 举报
回复
如果你要执行完a然后执行b,那么你的 Task 就是执行c,而 c 方法里边的逻辑是顺序执行a、b。这个其实并不是编程问题,而是概念封装问题,如果你硬说顺序程序都是并发的东西变成的,那就等于反过来解释设计方式了。
wanghui0380 2017-12-02
  • 打赏
  • 举报
回复
话同样不是这么说,任务可以组合,有时候A,B都可以自己独立执行 比如一个GSM模块的指令,AT,AT+COPS?当然可以独立在task里运行,如果你封装的时候就是两task,那么凭啥不能让外面的人自己连接顺序?? 逻辑上AT不通请检查串口线,请检查硬件模块是否启动,如果AT通AT+COPS?,请检查sim卡是否插好。我当然可以独立下发指令检查,我当然也可以按顺序连接两个本来已经写好的task 这种东西其实很多,比如RFID读写,你封装的自然是封一个读的task,一个写的task。好吧需求来了,一些场景需要严格匹配,得先读rfid唯一编号tid,在启动匹配写。对于这样的为啥不是连个task的顺序执行?
圣殿骑士18 2017-12-02
  • 打赏
  • 举报
回复
p哥说的有意思,顺序执行确实没有必要用task了,即使用task,一个就够了。
TaskFactory taskFactory = new TaskFactory();
taskFactory.StartNew(() => { StartWorkOut(task.JQ); StartWorkIn(task.JQ); });
guanyinsishengzi 2017-12-02
  • 打赏
  • 举报
回复
ContinueWith
wanghui0380 2017-12-02
  • 打赏
  • 举报
回复
Task.Factory.StartNew(() => {
// DOA}).ContinueWith(p => {
//DOB
 })
  • 打赏
  • 举报
回复
既然是顺序执行,又弄 Task 干什么呢?跟 Task 完全无关。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧