yield在大迴圈中需要注意的乙個情況

2021-08-03 12:15:47 字數 700 閱讀 8087

yield通常用於大迴圈中釋放控制權,讓介面滑鼠得到重新整理避免」卡死「。

比如uf_fill_data{

dw_1.reset()

for i = 1 to 3

yield()

dw_1.insertrow(0)

next

如果遇到函式執行需要較長時間時,客戶狂點滑鼠觸發執行這個函式,會出現異常。

避免的方法時放入乙個flag

uf_fill_data_new{

if ib_busy then return

ib_busy = true

dw_1.reset()

for i = 1 to 3

yield()

dw_1.insertrow(0)

next

ib_busy = false

下圖:正常的情況

下圖:重複的情況

同時,這個新的小軟體採用的是dw+json+php+apache+msssql2005+阿里ecs伺服器 來做的。經過測試很穩定,用php來為dw提供資料感覺非常好。可以看我的另一篇文字介紹:

Randomize在迴圈中應用需要注意的

需要迴圈插入表tb1中若干條記錄其中id欄位為主鍵,想用random生成的隨機數來。寫語句如下 with query1 do for i 0 to n do begin close sql.clear sql.add randomize parameters.parambyname id value...

3單個迴圈需要注意的問題

for迴圈 格式for a b c a是初始化計數器的語句,b是判斷是否繼續迴圈的語句,c是改變計數器的語句 int sum 0 for int i 1 i 5 i sum sum i 那麼i的最後乙個值是5,也就是i一直從1變到5 for迴圈的執行順序 int sum 0 for int i 1 ...

開發中關於死迴圈需要注意的

死迴圈 死迴圈,又稱為無限迴圈,也就是判斷是否迴圈的條件一直為true。while true 平常開發中,死迴圈也是比較常用的一種方式,只要在適當的時候提供出口,就可以減少很多不必要的操作。但是,死迴圈又是一種比較高位的操作,很可能會導致專案程序阻塞。開發中需要注意的地方 1.提供合適的出口,在適當...