c中如何讓 主執行緒 等待 子執行緒終止

2022-02-15 07:17:43 字數 1658 閱讀 8667

1樓:

建立一個主物件,有發出的執行緒數(分配執行緒時確定,並在分配時確定每個執行緒guid)、已完成的執行緒數(初始為0)、異常的執行緒數(初始為0)、以及**事件、

待處理的連結串列集合(應含有guid值)等。每個子執行緒完成時都會觸發一個完成事件或異常事件,主物件捕獲這個事件,並比對guid,並且將已完成的執行緒數累計(累計時需加鎖該屬性)以及獲取該執行緒返回的新表,將儲存到主物件中,當累計數與分配數相等時,則合併,並由主執行緒進行後繼操作。就不需要while,並且可用多個例項。

2樓:匿名使用者

利用非同步**技術,該你個簡單的例子。

////// 開始接收資料

//////

public bool startrevice()bool revfinish = revicedata.endinvoke(asyncresult);

isrevice = false;

return revfinish;

}private static bool isreviceall()return false;

}呼叫begininvoke開始網路接收資料,利用asyncresult.iscompleted判斷是否接收完成,沒有接收完成就就繼續接收。完成就返回你的資料結構。

3樓:匿名使用者

.sleep()//是睡眠 裡面寫事件

然後.wake 就叫醒!

.stop()是終止!

c#如何讓一個執行緒一直等待直到到一個事件的發生,然後處理完後繼續等待

4樓:匿名使用者

用非同步就可以了。

自定義泛型類,新增add事件,偵聽這個事件就行了。

5樓:匿名使用者

可以直接在那個事件中start這個執行緒

多執行緒問題,,如何讓所有子執行緒結束後再執行主執行緒,,要c#

6樓:明桖瑤

首先子執行緒必須由主執行緒啟動,所以嚴格意義上的「子執行緒結束後再執行主執行緒」是不可能實現,你的意思應該是:主執行緒建立完子執行緒後,等待子執行緒退出,在繼續執行。

你的**基本沒有多大問題,只是 join 方法位置放置不對。

thread1.start(); // 先啟動所有子執行緒thread2.start();

thread3.start();

thread4.start();

thread5.start();

thread1.join(); // 然後在等待子執行緒退出

thread2.join();

thread3.join();

thread4.join();

thread5.join();

你先前的**:

thread1.start(); // 執行緒1 啟動thread1.join(); // 等待 執行緒1 退出,執行緒1 未退出前,後面**無法執行

thread2.start(); // 以下**,均同上所述。

thread2.join();

thread3.start();

thread3.join();

thread4.start();

thread4.join();

c語言實現執行緒等待0 1秒,C語言如何實現多執行緒同時執行

函式應來該是沒有。sleep掛起了整自個就停止了肯定不bai行你可以du弄個迴圈,定義兩個zhi 時間,一個是你準dao備開始等待的時間start,一個是當前時間current 用c語言的時間函式得到這兩個時間,做差 如果差值是0.1秒,就繼續向下進行,如果不是0.1,就繼續迴圈判斷這樣 while...

c多執行緒執行時出現主介面卡死現象如何解決

無論是哪種語言都一樣,控制元件是主執行緒在執行的,你建立新的執行緒去跨執行緒訪問就會衝突,在一個執行緒裡處理一個事情,另一個執行緒被忽略,肯定會假死。舉個例子,用c 我拖放一個richtextbox記錄事件,一個button觸發事件開始,一個label記錄進度,一個progressbar顯示進度。執...

C中dll該如何宣告及呼叫,C 中如何呼叫DLL檔案?

dllimport twain 32.dll entrypoint 1 private static extern twrc dspxfer in,out twidentity origin,in twidentity dest,twdg dg,twdat dat,twmsg msg,in,out ...