台灣最大程式設計社群網站
線上人數
1550
 
會員總數:243325
討論主題:188102
歡迎您免費加入會員
討論區列表 >> VB.NET >> Thread重複執行
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Thread重複執行
價值 : 100 QP  點閱數:223 回應數:7

樓主

HB
初級專家
1293 64
2434 255
發送站內信

再次上來請教有關Multi Thread重複執行的觀念,請各位前輩不吝指教。
謝謝!

目前採用下列語法執行t Thread,問題如下:
1. 若要再次執行t Thread,我都再複製前兩行指令執行,此作法是否正確?
2. 或是直接執行t.Start()指令即可,但會不會有前一個t Thread未執行完,又再次被執行的狀況發生,請問如何避免?



搜尋相關Tags的文章: [ Thread ] ,
本篇文章發表於2018-09-29 15:46
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

香帥
檢舉此回應
可設一個flag,判斷是否執行完,避免重複執行
本篇文章回覆於2018-09-29 22:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

HB
檢舉此回應
感謝香帥的回覆。

目前正是採取Flag傳回方式實作,但有時,會出現不是預期的結果出現,不知是資料庫筆數過多,或有其它緣由,才上網發問。

Google了一些資訊,採用t.join方式執行,結果畫面停留時間過長。
本篇文章回覆於2018-10-04 08:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

香帥
檢舉此回應
請參考
http://www.blueshop.com.tw/board/FUM20041006161839LRJ/BRD20120204164125KKX.html
我一樓的解答,觀念是一樣的,及其他人的解答,也可拿來參考。
您用flag做lock 時候,出現不是預期的結果出現,表示沒有寫好,方便的話po出程式碼,及show出那種不是預期的結果,更容易得到答案。
本篇文章回覆於2018-10-08 23:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Sleepyhead
捐贈 VP 給 Sleepyhead 檢舉此回應
第二種方法不佳,若Thread仍在執行中呼叫Thread.Start,會拋出Exception,需要在呼叫前做狀態檢查或等待,造成主Thread 被block住。
第一種方法比較好,若不希望Thread同時執行時可以適當加入同步機制,例如SyncLock。
本篇文章回覆於2018-10-09 14:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

HB
檢舉此回應
感謝2位專家的協助說明。

使用Thread的用途,是從資料庫撈出篩選後的資料放入ComboBox物件中,只是物件較多,採用Thread方式顯示,避免畫面停留過久,被誤認為系統當掉。

將語法結構整理如下,目前使用 AddHandler ThreadComplete, AddressOf FinishedThread 語法,來判斷Thread是否已完成,執行過程中大部分是正確的結果輸出,只有少部分出現非預期的結果,自行推論可能因為資料量太大,或篩選欄位過多所導致,或是哪裡的語法、流程需要修正?請不吝指教。

請問Sleepyhead:
依提供之說明,若要重複執行t Thread,採第一種方法比較好,請問此需求是否適合Thread Pool的作法?
目前的作法只是從資料庫中撈出所需的資料,是否需要採用SyncLock?
因為對SyncLock的使用不甚熟悉!


本篇文章回覆於2018-10-14 10:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

練武功
檢舉此回應
我覺得可能是因為有些全域變數(_Field..)使用在工作執行緒中。所有的工作執行緒都可能在同一時間使用,使得設定該變數資料時,並非你提供你所想要的工作執行緒使用,這會造成變數資料使用的混亂,增加不確定性。
一般來說,工作執行緒所使用的函數,設計在類別(class)中,較為容易與簡潔。例如


上述的程式是將運算過程放在類別中,然後開設4個共作執行緒進行多工運算,而在主執行緒則負責監督各執行緒運算到第幾次。
供你參考
本篇文章回覆於2018-10-14 20:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

HB
檢舉此回應
感謝練武功的說明,貼上之程式碼中_Field以下之語法是放在另一Class,只是為了精簡程式碼,所以全部放在一起。

提供之範例,將在Study後,有問題再請教。謝謝!
本篇文章回覆於2018-10-18 07:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.