[問題] 動態更新Label值

作者: Anthony53 (安東尼)   2014-02-10 10:59:15
如果我從DB中撈資料
撈完資料後要立即更新Lable值
之後每30秒會撈一次資料
我想要在撈完資料後立即更新Label值
我嘗試用Timer
但他只能控制時間
可是我希望是在我做完這個動作後的下一行更新Label值
而不是每30秒更新值
我也試過委派了
可是都不行 請問還有甚麼辦法嗎 謝謝
作者: a926 (Aaron)   2014-02-10 11:06:00
?? Timer每30秒觸發事件後->DB撈資料->更新Label值是你的流程有問題嗎?
作者: KanoLoa (卡)   2014-02-10 13:23:00
更新label.text 之後,多一行label.update看看你第一次撈資料的時候有確定連接到資料庫了嗎
作者: Litfal (Litfal)   2014-02-10 13:25:00
是DB端有問題還是UI端有問題?所以說要把物件職責拆開阿...至少把DbContext和UI分開,改用事件通知來寫。
作者: johnpage (johnpage)   2014-02-10 15:07:00
timer使用有問題
作者: Litfal (Litfal)   2014-02-10 19:04:00
A到底是string還是Control...怎麼會有A.Text而且你這Timer也沒有重新撈資料阿
作者: KanoLoa (卡)   2014-02-11 00:25:00
會,撈資料太慢配上你的timer邏輯可能會卡到沒更新畫面先試試看把label那行丟在button2事件最後一行測試正確不過這種寫法不好,別在UI事件中放可能會讀取很久的邏輯額外開一個新的執行序去撈資料UI更新畫面會等你事件全處理好才一次更新,自然會跳過
作者: m339606 (mize)   2014-02-11 12:27:00
AJAX + AJAX Timer
作者: KanoLoa (卡)   2014-02-11 13:01:00
因為整個事件要等你迴圈跑完才更新畫面阿,當然會延遲。創一個執行緒去額外跑回圈,會稍微好一點http://support.microsoft.com/kb/318607/zh-tw鬼打牆了,請開另一個執行續跑回圈,迴圈速度慢點即可。你知道更新畫面的函示是哪個嗎?
作者: Litfal (Litfal)   2014-02-11 18:33:00
你都用Timer了何必用迴圈哩...?
作者: KanoLoa (卡)   2014-02-11 18:57:00
乾脆全貼吧
作者: largesperm (reindeer)   2014-02-11 20:28:00
用 backgroundworker
作者: KanoLoa (卡)   2014-02-11 23:20:00
捨棄你的迴圈吧,另開一個timer慢慢+++++會比較容易理解
作者: Litfal (Litfal)   2014-02-12 00:32:00
回去重讀Timer!上面就想推薦用System.Threading底下的Timer
作者: KanoLoa (卡)   2014-02-12 01:01:00
用一個timer一直檢查數值是否有變動來決定要不要更新迴圈要拿掉!然後不要一直撈資料,不然都卡在那邊

Links booklink

Contact Us: admin [ a t ] ucptt.com