易語言裡有延遲、延時,模組裡也有程式延時,超級延時,之類的命名,但多執行緒裡的指令碼的暫停和恢復,還涉及到內部解綁,這裡採用ui通知的方式,開始真正的暫停,使用死迴圈,不去呼叫系統介面,減少系統資源的占用。
511遇見易語言多執行緒大漠多執行緒
大漠多執行緒指令碼延時
.版本 2
.子程式 指令碼延時, , , 用來控制指令碼的暫停恢復
.引數 序號, 整數型
.引數 時間, 整數型
.區域性變數 死迴圈, 邏輯型
死迴圈 = 真
' 判斷是否有結束
.如果真 (執行緒資訊 [序號].是否結束)
' 解綁,退出之前,必須在本執行緒內解綁
執行緒資訊 [序號].dm.unbindwindow ()
退出執行緒 (0)
.如果真結束
' 判斷是否暫停
.如果真 (執行緒資訊 [序號].是否暫停)
執行緒資訊 [序號].執行緒狀態 = #執行緒狀態_暫停
多執行緒_非同步通知ui (#通知型別_更新, 序號)
' 如果暫停時繼續可以前台操作,
執行緒資訊 [序號].dm.enablebind (5)
' 開始真正的暫停,使用死迴圈,不去呼叫系統介面,減少系統資源的占用
.判斷迴圈首 (死迴圈)
' 沒有暫停
.如果真 (執行緒資訊 [序號].是否暫停 = 假)
執行緒資訊 [序號].執行緒狀態 = #執行緒狀態_正在執行
多執行緒_非同步通知ui (#通知型別_更新, 序號)
' 開啟後台
執行緒資訊 [序號].dm.enablebind (1)
跳出迴圈 ()
.如果真結束
' 已經結束
.如果真 (執行緒資訊 [序號].是否結束)
' 退出前,一定要在本執行緒內解綁
執行緒資訊 [序號].dm.unbindwindow ()
退出執行緒 (0)
.如果真結束
延時 (1)
.判斷迴圈尾 ()
.如果真結束
' 再次判斷執行緒狀態是否正在執行,
.如果真 (執行緒資訊 [序號].執行緒狀態 ≠ #執行緒狀態_正在執行)
執行緒資訊 [序號].執行緒狀態 = #執行緒狀態_正在執行
多執行緒_非同步通知ui (#通知型別_更新, 序號)
' 開啟後台
執行緒資訊 [序號].dm.enablebind (1)
.如果真結束
延時 (時間)
原始碼:易語言多執行緒大漠多執行緒-38大漠多執行緒模板-8指令碼延時 易語言多執行緒大漠多執行緒指令碼主副執行緒
在大漠多執行緒模板中,指令碼副執行緒的作用主要是乙個監控執行緒,可以監控遊戲視窗是否存在,遊戲是否卡屏,是否掉線,當然你可以用來進行遊戲裡的其他檢測監控。511遇見易語言多執行緒大漠多執行緒 大漠多執行緒主副執行緒 版本 2 子程式 指令碼副執行緒,監控執行緒 引數 序號,整數型 區域性變數 dm,...
易語言多執行緒大漠多執行緒模板UI更新
ui更新就是對視窗的元件超級列表框傳送讀寫,採用了封裝。大漠多執行緒模板原始碼 版本 2 支援庫 iext 子程式 ui 更新,用來更新視窗的超級列表框相關執行緒資訊 引數 主序號,整數型 引數 操作,整數型 區域性變數 列表索引,整數型 增加 如果真 操作 ui 增加 列表索引 視窗列表.插入表項...
易語言多執行緒大漠多執行緒模板多執行緒初始化
多執行緒初始化,在啟動視窗後,需要首先呼叫,包括對執行緒控制代碼,視窗控制代碼,程序pid,程序狀態,異常狀態,是否暫停,是否結束的初始化,特別說明的是,為任務狀態申請記憶體空間,因為任務狀態的資料型別是文字型,防止避免多執行緒訪問文字型變數引發的資料衝突,預先分配好記憶體位址。511遇見易語言多執...