none
程式不明原因,被系統要求關閉 RRS feed

  • 問題

  • 發生一個沒有頭緒的問題。

    作業系統: Windows 10

    開發環境: C# , .Net Framework4.5

    軟體概述: 使用TCP Client 對產線數個機台進行生產監控,使用TCP Modbus 與 台達人機HMI 進行通訊。

    程式每秒會對五個IP 位置問答兩次,共十次 。

    問題概述: 大多數情況下程式都運作正常,也有連續執行6~7小時正常結束的情況,但偶爾就會在執行數小時後發生如圖片的問題?

    Windows在甚麼情況下會強制關閉正在執行的程式?



    2017年4月21日 上午 02:13

解答

所有回覆

  • 程式執行發生錯誤(例外), 沒有妥善處理, 就會結束執行
    • 已標示為解答 panda828 2017年4月27日 上午 05:27
    2017年4月21日 上午 02:22
  • MODBUS TCP是用nMODBUS.dll嗎?dll裡面沒有對例外處理,會出現這樣的問題...

    2017年4月21日 上午 03:33
  • 只好在所有可能的地方用 try catch 包起來,在 catch 中 log exception ,先確認能不能抓到發生的範圍在哪.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2017年4月21日 上午 04:00
    版主
  • 我使用的是 EasyModbus.dll(我有小改Connect函數,使用AsyncWaitHandle避免過長時間沒回應),它有例外處理的機制。

    我一些比較重要的Code也有用Try catch 包起來。大部分的情況下都是運作正常,但偶爾(一個月幾次)Run幾個小時候就出現那個畫面。

    今天Run 超過6小時了,沒事,一切正常,看樣子可能有某個偶發的例外我沒處理好。


    • 已編輯 panda828 2017年4月21日 上午 07:13
    2017年4月21日 上午 06:52
  • 我自己用 TcpClient 直接做 Modbus TCP ,跑幾個月都不會出事...

    建議你將 .Net 編譯成 debug 模式,出錯時,在錯誤方塊左下方可以叫出錯誤訊息,比較好除錯。

    另外建議你追蹤你這隻程式的執行緒,Socket / SerialPort 的事件都是多緒觸發,你沒處理好可能是執行緒爆到 500 條以上,鎖死掛掉。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2017年4月21日 下午 03:57
  • 你好,你要用 try...catch去抓error,再寫log寫出來,如果你不知道哪裡出錯,只能

    1) 所有有可能發生問題的code 也加上try...catch,

    2) 在VS執行debug,直到出錯

    個人建議用第一個,其實寫程式,就是要在所有有可能出錯的地方,用try...catch抓錯,如 sqlConnection, FileIO, Type Convert...etc


    大家一齊探討、學習和研究,謝謝!
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD,
    MCT, Microsoft Community Star(TW & HK),
    Microsoft MVP for VB.NET since 2003
    My MSMVP Blog

    請記得將對您有幫助的回覆 標示為解答 以幫助其他尋找解答及參與社群討論的朋友們。
    Please remember to click Mark as Answer on the post that helps you. This can be beneficial to other community members reading the thread.

    2017年4月25日 上午 01:29
  • 謝謝大家的幫忙,找到問題了。 自己程式沒寫好,造成資料量溢位。又沒包在Try catch中。
    2017年4月27日 上午 05:31