none
應該如何清除FlowLayoutPanel裡的東西才算完整 RRS feed

  • 問題

  • 因為如果沒有清空裡面所新增的元件的話…如果多重新整理新增幾次的話就會產生錯誤了…
    所以寫了以下清空的方法不知道是否正確…
    問題是有改善了…
    但不知道我這樣的清理方法是否真的有把佔的記憶空間清除掉呢?

    FLPStep是FlowLayoutPanel的命名

    If Me.FLPStep.Controls.Count > 0 Then
        For count As Integer = Me.FLPStep.Controls.Count - 1 To 0 Step -1
            If Me.FLPStep.Controls(count) IsNot Nothing AndAlso Me.FLPStep.Controls(count).IsDisposed = False Then Me.FLPStep.Controls(count).Dispose()
        Next
    End If
    Me.FLPStep.Controls.Clear()

    這樣子寫法對嗎…
    或者有什麼寫法正更確的…指大家多多指教…
    2009年12月7日 上午 08:17

解答

  • 但不知道我這樣的清理方法是否真的有把佔的記憶空間清除掉呢?

    Me.FLPStep.Controls.Clear()

    直接 Clear 即可,最後再呼叫:
    GC.Collect()

    讓 .Net 重整記憶體空間才會真的把記憶體放出來。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 justinwu 2009年12月7日 下午 11:46
    2009年12月7日 上午 08:51

所有回覆

  • 但不知道我這樣的清理方法是否真的有把佔的記憶空間清除掉呢?

    Me.FLPStep.Controls.Clear()

    直接 Clear 即可,最後再呼叫:
    GC.Collect()

    讓 .Net 重整記憶體空間才會真的把記憶體放出來。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 justinwu 2009年12月7日 下午 11:46
    2009年12月7日 上午 08:51
  • ○…原來不需要這麼多的步驟…
    直接下GC.Collect()就行了…
    了解了解…感謝心冷大大的教導…
    2009年12月8日 上午 12:00