[問題] Threading.Timer 問題

看板C_Sharp (C#)作者 (dabid')時間10年前 (2015/03/05 15:27), 10年前編輯推噓4(406)
留言10則, 4人參與, 最新討論串1/1
小弟在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

03/05 17:02, , 1F
你的fileCount宣告在哪裡?而且兩個大小寫不一樣是純筆誤嗎
03/05 17:02, 1F

03/05 17:05, , 2F
還有你的period設多久? 是說我不太懂你為什麼要這樣用
03/05 17:05, 2F

03/05 17:56, , 3F
fileCount跟Filecount是一樣的嗎?
03/05 17:56, 3F

03/05 18:02, , 4F
你應該是有重複進入 所以會有問題
03/05 18:02, 4F

03/05 18:38, , 5F
把filecount++跟超過5return寫到處理檔案前面
03/05 18:38, 5F
※ 編輯: dabiddabid (118.163.51.121), 03/06/2015 11:28:06

03/06 16:40, , 6F
牽涉到多續,比較正規的做法應該是用鎖,請參考
03/06 16:40, 6F

03/09 09:38, , 8F
timer2Running 是甚麼?
03/09 09:38, 8F

03/09 09:38, , 9F
應該是跟我上面一樓說的一樣,用LOCK
03/09 09:38, 9F

03/09 15:29, , 10F
感謝大家,問題經由T大已經解決
03/09 15:29, 10F
文章代碼(AID): #1K-0LwkN (C_Sharp)
文章代碼(AID): #1K-0LwkN (C_Sharp)