none
在timer呼dll檔的function後,持續一段時間記憶體會一直增加,該如何解決? RRS feed

  • 問題

  • 我使用別人的dll檔,在timer中呼叫裡面的function來錄影,也有正常的stop和close,timer跑到最後我還會把timer先false然後dispose timer後再enable timer,但是記憶體還是一直增加,請問有什麼辦法可以解決使我ce的記憶體增加的問題?  我的執行環境是embedded ce 6.0r3、開發工具是visual studio 2008 c#。
    2010年11月12日 下午 01:35

解答

  • 有一種可能是, 那個DLL本身就沒有正確處理釋放記憶體這件事, 尤其當它是由C/C++寫的WIN32 API, 程式作者必須自己規劃記憶體的配置與釋放. 如果原因是這樣, 除了原作者以外, 沒人可以改.
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 天狼星人 2010年11月18日 上午 03:03
    2010年11月12日 下午 01:50
    版主

所有回覆

  • 有一種可能是, 那個DLL本身就沒有正確處理釋放記憶體這件事, 尤其當它是由C/C++寫的WIN32 API, 程式作者必須自己規劃記憶體的配置與釋放. 如果原因是這樣, 除了原作者以外, 沒人可以改.
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 天狼星人 2010年11月18日 上午 03:03
    2010年11月12日 下午 01:50
    版主
  • 先請原廠提供完整的範例,確認原廠範例不會造成記憶體增加,然後用原廠範例改成你要的,若沒問題再剪貼到你的原始碼上。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年11月12日 下午 03:21
  • Dispose timer 是沒有用的, 你得看那個 DLL 有沒有提供 destructor 可以呼叫。
    ASP.NET 2Share - http://www.dotblogs.com.tw/johnny 
    2010年11月15日 上午 01:35
  • 了解。謝謝回答。
    2010年11月18日 上午 03:04
  • 因為無法請給dll的測試,所以已經找到別的dll取代了。謝謝回答。
    2010年11月18日 上午 03:05
  • 是有個corelease的function可呼叫,但我在timer每跑一次就呼一次也是沒辦法完全釋放,一旦燒機時間太長還是會掛掉… 。謝謝回答。
    2010年11月18日 上午 03:07