iT邦幫忙

1

C# 一個 24小時一直在 執行的執行檔

我有一個執行檔,他24H他一直在跑,每小時產生一張圖片
比如:D:\圖片檔案位置
檔名ABC.jpg
然後比如 早上8點產生ABC.jpg 之後 9點,10點一樣產生ABC.jpg ,他會9點覆蓋8點,10點覆蓋9點

一直去循環,產生一個新圖片檔覆蓋前一個,但我發現
執行檔跑跑 大概跑15天左右 他全部執行檔就關閉了 (我這個執行檔 有5個) 都做一樣產生圖檔動作

我有寫記憶體釋放
以下相關記憶體釋放code

  ExcelPath.Dispose();
  JPGPath.Dispose();
  
 sheet.SaveToImage(txtJPGPath.Text + @"\" + txtJPGName.Text + ".jpg");
 lblResult.Text = "圖片: " + txtJPGName.Text + "轉檔成功!";
 sheet.Dispose();//關閉記憶體

當然關閉資料庫一定有的

 dt.Dispose();
 dt2.Dispose();
 dt3.Dispose();
 dt4.Dispose();
 dt5.Dispose();
 dt6.Dispose();
 dt7.Dispose();

請問我是不是漏掉什麼導致它記憶體一直被吃掉最後程式崩潰強制關閉?
還是複製貼上圖檔漏掉什麼?
畢竟該電腦24H 不關機 ,一直在跑執行檔

看更多先前的討論...收起先前的討論...
ant1017 iT邦新手 5 級 ‧ 2018-11-22 10:58:29 檢舉
你可以測試跑15分鐘看看,然後開著工作管理員,看你那隻程式到底吃多兇,有可能是其他因素
ted8224 iT邦新手 5 級 ‧ 2018-11-22 11:11:56 檢舉
我想說 是不是 我少露 一些該釋放 未釋放 的記憶體 ,還是 Windows 本身 不能一直 複製貼上? 應該也不可能...
我知道 電腦記憶體是 4G
youarefat iT邦新手 5 級 ‧ 2018-11-22 11:36:16 檢舉
你能確定關閉的理由是什麼嗎? 記憶體沒處理好確實很有可能 畢竟才執行24*15=360次
mayachen iT邦新手 5 級 ‧ 2018-11-22 11:37:38 檢舉
程序被關閉一定有原因,應該先找出原因再判斷要怎麼處理,看一下那裡例外處理及記錄沒有做好,或Windows事件紀錄有沒有線索。
ted8224 iT邦新手 5 級 ‧ 2018-11-22 11:50:34 檢舉
@youarefat 對ㄟ ,他觸發的確 360 次....
@mayachen 好的 謝謝
小魚 iT邦高手 1 級 ‧ 2018-11-22 12:02:04 檢舉
這年頭4G記憶體能做什麼, 我一開Windows就吃超過4G了
ted8224 iT邦新手 5 級 ‧ 2018-11-22 13:15:17 檢舉
@小魚 業主電腦 ,我只把我開發好的執行檔 ,放過去 給他Run ....
小成 iT邦高手 10 級 ‧ 2018-11-22 13:40:43 檢舉
他是固定一小時跑一次嗎?
換個角度,用WINDOWS工作排程器一小時排一次,跑完就結束呢?
ted8224 iT邦新手 5 級 ‧ 2018-11-22 14:18:18 檢舉
@小成 對阿 一小時執行一次 , 觸發功能一次,後面 排程器 在觸發 投影 ,不能結束 ,他要一直播放
浩瀚星空 iT邦研究生 2 級 ‧ 2018-11-22 15:54:08 檢舉
其實,如果是windows系統的話。除非是server等級的。
要不然~~~不要太過相信應用程式可以一直run不會掛掉的。
(連google瀏覽器開太久就會掛了)

你該要想的是,掛了要怎麼重啟會比較好。
ted8224 iT邦新手 5 級 ‧ 2018-11-22 16:50:08 檢舉
@浩瀚星空 因為我是開發好執行檔 (.exe) , 有timer 事件 可以 讓他多久觸發 Button 然後 觸發(一小時吃一次 )
效果 , 24H 執行檔 掛在那 ,有一個 Label 會顯示 時間 這樣

2 個回答

0
Luke
iT邦新手 3 級 ‧ 2018-11-22 17:03:16

/images/emoticon/emoticon67.gif

您寫的開發好的執行檔 ,放過去 給他Run ....
是 windlows 內 『工作排程器』
一般就是時間到了,就去執行您放的執行檔,這不會檔機,執行完就會釋放了。

『執行檔跑跑 大概跑15天左右 他全部執行檔就關閉了 (我這個執行檔 有5個) 都做一樣產生圖檔動作』表示 您的架構應該有問題,該不會是Thread 再產生 Thread
您的主程式都沒有關過?

看到"ExcelPath" 您再處理EXCEL 所以不知道
是將EXCEL 直接打開,還是COPY 到TMP 再打開?
或者 EXCEL資料太大,造成您的 DLL 開不了EXCEL 資料處理...
或者....

Windows...

ted8224 iT邦新手 5 級 ‧ 2018-11-23 08:19:15 檢舉

EXCEL ,並沒有 打開 只是選擇,產生圖片結果 並部會把Excle 打開, 然後Excel 資料並不會太大

有去看電腦事件檢視器,看不出來哪裡錯誤..

曾經也有人這樣跟我說 一個執行檔,透過排程器,去弄,但來源要活的,控制時間要活得,檔名也要活得,可以讓業主去調

4
I code so I am
iT邦新手 1 級 ‧ 2018-11-23 09:10:13

可以在程式中檢查可用記憶體,如發覺過低,可執行 Application.Restart(),這樣就可以解決 memory leakage 的問題。

我要發表回答

立即登入回答