我有一种情况,我想启动3个线程:tr1,tr2和tr3
我希望tr2在tr1之后启动,tr3在tr2之后启动。
我怎样才能做到这一点?
答案 0 :(得分:2)
你可能有什么理由?如果你不需要,并行运行为什么你需要3个线程?
任何方式 - 你可以从thread2调用thread1.Join()
并从thread3调用thread2.Join()
,这样每个线程都会等待前一个线程。
答案 1 :(得分:1)
让每个线程开始下一个。
但是,如果它们都按顺序运行,那么首先要使用多个线程的原因是什么?
答案 2 :(得分:1)
在Fx4中,您可以使用任务和ContinueWith功能。
尽管必须按顺序运行任务(作业)才有意义,但对于线程来说似乎并不那么明智。为什么不使用1个按顺序执行m1(),m2()和m3()的Thread?特别是如果你在Fx <= 3.5
这里的另一个方面是错误处理。任务库将处理或多或少不可见,但没有它你需要小心。
答案 3 :(得分:0)
最简单的方法就是在初创公司之间进行一次小睡眠,这就是我“解决”问题的方法。
另一个选择是在完成非线程安全的事情之后从tr1启动tr2,从tr2启动tr3。
他们如何相互依赖?你为什么不只有一个线程?
答案 4 :(得分:0)
您可以使用WaitHandles来表示线程已完成工作。