推 braverycloud: t1.Start(); //下一行接 t1.Join(); 06/30 01:13
推 s4300026: 在workA裡面呼叫t2 start 06/30 12:34
→ WillBeFine: 將WorkB放在WorkA後面比較不易控制流程呢.謝謝您 06/30 19:09
推 Litfal: 改用Task吧 07/05 23:30
→ ssccg: WorkB要等WorkA完成的話不應該用兩個thread,應該就是一個 07/06 10:23
→ ssccg: thread配一個queue去跑才對 (在現成包裝好的lib這個通常叫 07/06 10:23
→ ssccg: 做executor或scheduler) 07/06 10:23
→ ssccg: 當然記得要用single thread executor/scheduler 07/06 10:28
→ ssccg: 如果需求再複雜一點,其實不止是一個thread可滿足的,最終 07/06 10:36
→ ssccg: 還是要有個地方去寫流程控制,當然不建議寫在Work裡 07/06 10:36
→ ssccg: 把工作排進scheduler通常會回個可用來控制的物件,假設就叫 07/06 10:40
→ ssccg: Task,通常會提供wait、cancel、run next之類的控制方法 07/06 10:42
→ kobe8112: 抱歉是不是我資質駑鈍... 07/06 14:25
→ kobe8112: ThreadA執行WorkA,ThreadB執行WorkB 07/06 14:25
→ kobe8112: 想要 ThreadA 完成後, 再開始做 ThreadB 07/06 14:26
→ kobe8112: 但原PO卻說將WorkB放在WorkA後面比較不易控制流程 07/06 14:26
→ ssccg: 原PO的意思應該是「在workA裡面呼叫t2 start」,把控制流程 07/06 15:53
→ ssccg: 程式寫到原本單純的Work中不好 07/06 15:54
→ ssccg: 當然其實不需要去改WorkA裡面,而是把t1執行的東西改成 07/06 15:56
→ ssccg: () => { WorkA(); //呼叫t2 start } 就好了 07/06 15:59
推 Litfal: 我猜原po只是單純簡化狀況吧 07/07 15:55
推 chchwy: A做完才做B,聽起來就不需要Thread 呀 08/08 22:40
推 Roleman: 那你用單緒做就可以啦 08/13 09:38