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 ...