PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_Sharp
[問題] 請教這種情形下thread的寫法
作者:
WillBeFine
(努力)
2023-06-30 00:52:31
大家好:
小弟現在有一問題關於多線程的設計,
如果現在有2個線程: ThreadA 及 THreadB,
如果想要 ThreadA 完成後, 再開始做 ThreadB,
請問要怎樣寫比較好???
P.S. ThreadA 及 THreadB 都各自己需要得到收到某些訊息後才算是完成工作
using System;
using System.Threading;
class Program
{
static void Main(strin g[] args)
{
Thread t1 = new Thread(WorkA);
t1.Start();
Thread t2 = new THread(WorKB);
t2.Start();
}
以上這樣會兩件事一起做.. 不是 ThreadA完全完成後到ThreadB開始
}
謝謝各位指導
作者: braverycloud (嵐)
2023-06-30 01:13:00
t1.Start(); //下一行接 t1.Join();
https://reurl.cc/3x6988
作者:
s4300026
(s4300026)
2023-06-30 12:34:00
在workA裡面呼叫t2 start
作者:
WillBeFine
(努力)
2023-06-30 19:09:00
將WorkB放在WorkA後面比較不易控制流程呢.謝謝您
作者:
Litfal
(Litfal)
2023-07-05 23:30:00
改用Task吧
作者:
ssccg
(23)
2023-07-06 10:23:00
WorkB要等WorkA完成的話不應該用兩個thread,應該就是一個thread配一個queue去跑才對 (在現成包裝好的lib這個通常叫做executor或scheduler)當然記得要用single thread executor/scheduler如果需求再複雜一點,其實不止是一個thread可滿足的,最終還是要有個地方去寫流程控制,當然不建議寫在Work裡把工作排進scheduler通常會回個可用來控制的物件,假設就叫Task,通常會提供wait、cancel、run next之類的控制方法
作者:
kobe8112
(小B)
2023-07-06 14:25:00
抱歉是不是我資質駑鈍...ThreadA執行WorkA,ThreadB執行WorkB想要 ThreadA 完成後, 再開始做 ThreadB但原PO卻說將WorkB放在WorkA後面比較不易控制流程
作者:
ssccg
(23)
2023-07-06 15:53:00
原PO的意思應該是「在workA裡面呼叫t2 start」,把控制流程程式寫到原本單純的Work中不好當然其實不需要去改WorkA裡面,而是把t1執行的東西改成() => { WorkA(); //呼叫t2 start } 就好了
作者:
Litfal
(Litfal)
2023-07-07 15:55:00
我猜原po只是單純簡化狀況吧
作者:
chchwy
(mat)
2023-08-08 22:40:00
A做完才做B,聽起來就不需要Thread 呀
作者:
Roleman
(米先生)
2023-08-13 09:38:00
那你用單緒做就可以啦
繼續閱讀
[問題] vs2022 表單設計工具突然不見(第n次)
chin2049
[問題] .Net 5的mvc,前端ajax call後端的問題
sdtt
[問題] BinaryWrite下載檔案後 再註冊一段script
kisha024
[問題] 無法導入ink.runtime
Alexander1
大批擷取chatGPT資料,以C#實作!
southknight
[問題] XmlDocument 的 DocumentElement 屬性
kisha024
[問題] winform下簡單顯示3D數據的方法
kenny2963
[問題] 無法使用AddHeader於ResClient取得資料
ansem
[問題] 要如何收 BroadcastSystemMessage() 訊息
don323
[問題] 請教WPF第三方套件的購買
z1976
Links
booklink
Contact Us: admin [ a t ] ucptt.com