为了账号安全,请及时绑定邮箱和手机立即绑定

C# 多线程任务并行运行问题

C# 多线程任务并行运行问题

C#
一只甜甜圈 2018-12-13 05:02:57
有四个任务 任务1:登陆验证 任务2:验证成功后从Web服务获取数据 任务3:验证成功后从数据库获取数据 任务4:使用2、3的数据执行一个方法 在解决上述问题中,最早的方法是使用顺序执行1、2、3、4,现在对此做了优化,由于2、3两个任务之间是没有关联的,可以放到不同线程内执行,但是4的执行需要2、3同时完成作为条件,因此,在1执行后,创建两个全局标志位M2,M3,开启三个线程分别执行2、3、4,其中2、3执行完毕后会分别把M2、M3置为true,4的线程一直循环监听M2、M3,当两者都为true时开始执行4的任务。现在想把这个方法做进一步优化,不希望4一直在询问2、3是否完成了,而是2、3完成了自己通知4。这里想到了使用异步委托BeginInvoke,创建一个4的回调函数,但难点是需要两个任务都执行完毕后才执行这个回调函数。很自然地,我想到了再一次使用全局变量M2,M3。不过总觉得这种方式不太优雅?是否有更好的解决方案呢?另外,想请教下这种类型的问题该归纳为那种问题,不太像并发问题吧?
查看完整描述

2 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

1 、Thread Join

2、Event Wait


查看完整回答
反对 回复 2018-12-18
?
SMILET

TA贡献1796条经验 获得超4个赞

亲,有好几个办法可以解决你的问题,涉及到线程同步的

你可以去MSDN下面看一下Thread下面的方法,或是System.Threading命名空间下的类,就可以轻松解决你的问题.


查看完整回答
反对 回复 2018-12-18
  • 2 回答
  • 0 关注
  • 714 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信