如何實作多執行緒效果,不讓程式卡死!
uj5u.com熱心網友回復:
http://blog.csdn.net/gaoqiangz/article/details/39613559這個文章可以看看
uj5u.com熱心網友回復:
PB的多執行緒用到的就幾個函式SharedObjectRegister()
SharedObjectGet()
SharedObjectUnregister()
用SharedObjectRegister(Classname,Instancename) PB幫助檔案是Classname和Instancename,即類名和實體名。
用SharedObjectGet(instancename , objectinstance) 將實體名和具體的物件實體系結,然后就可以通過物件實體POST 出發類里預定義的程序或函式。比如在類中預定義了uo_add函式,可以objectinstance.post uo_add
用SharedObjectUnregister(instancename) Unregisters a user object that was previously registered. 注銷掉用戶實體物件
eg.
1、定義一個nvo_multithread
添加add(int ai_n)函式
int li_i
int li_result = 0
sleep(5)
For li_i= 0 To ai_n
li_result+=li_i
Next
messagebox("",string(li_result))
2、定義一個視窗,在Instance Variables定義變數:nvo_multithread invo_thread
3、在Open事件中的代碼:
invo_thread = Create nvo_multithread
SharedObjectRegister ("nvo_multithread" ,"thread1" )
SharedObjectGet ("thread1" , invo_thread)
4、在Close事件中的代碼:
Destroy invo_thread
SharedObjectUnregister("thread1")
5、可以在一個按鈕的Click事件中呼叫:
int i
invo_thread.post add(i)
呼叫后,就可以異步執行了
注意點:如果想要多個執行緒一起執行,就一定要多注冊幾個實體物件。即多執行幾次2、4步。可以用陣列來做。
比如我在Instance Variables定義成nvo_multithread invo_thead[5]
Open事件:For li_ii= 1 to 5
invo_th[li_ii] = Create nvo_multithread
SharedObjectRegister( "nvo_multithread" , "tthread" + string(li_ii) )
SharedObjectGet ("tthread" + string(li_ii) , invo_th[li_ii] )
Next
Close事件:For li_ii= 1 to 5
Destroy invo_th[li_ii]
SharedObjectUnregister("thread" + string(li_ii))
Next
uj5u.com熱心網友回復:
參考鏈接:http://blog.csdn.net/namgking/article/details/3421359轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/24738.html
標籤:基礎類
