看板 C_Sharp 關於我們 聯絡資訊
小弟在Form裡面建一個Threading.Timer 目的是依序把檔案讀進來做初步處理 timer跑的內容大致如下 : ex假如我讀了5個檔案 private void TimerCallBack2(object obj) { if (!timer2Running) { Thread.Sleep(100); } else { ... 讀一個檔FileList[fileCount],接著處理檔案...... ... FileCount ++ ; if (FileCount == 5)//當處理到5個檔就把flag設fasle { timer2Running = false; FileCount = 0; } } } 但我發現每次都多讀一倍的檔案,也就是重複跑一次所有檔案 我去觀察內不運作發現就算timer2Running == False他還是跑進去讀檔 fileCount也確實被重設為0 第一次使用搞半天也搞不好,我的檔案處理耗費時間較多,是這個的問題嗎 有辦法把這種timer停下來嗎? sorry打完沒檢查 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.51.121 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1425540474.A.B97.html
Litfal: 你的fileCount宣告在哪裡?而且兩個大小寫不一樣是純筆誤嗎 03/05 17:02
Litfal: 還有你的period設多久? 是說我不太懂你為什麼要這樣用 03/05 17:05
TameFoxx: fileCount跟Filecount是一樣的嗎? 03/05 17:56
TameFoxx: 你應該是有重複進入 所以會有問題 03/05 18:02
TameFoxx: 把filecount++跟超過5return寫到處理檔案前面 03/05 18:38
※ 編輯: dabiddabid (118.163.51.121), 03/06/2015 11:28:06
Litfal: 牽涉到多續,比較正規的做法應該是用鎖,請參考 03/06 16:40
GoalBased: timer2Running 是甚麼? 03/09 09:38
GoalBased: 應該是跟我上面一樓說的一樣,用LOCK 03/09 09:38
dabiddabid: 感謝大家,問題經由T大已經解決 03/09 15:29