none
Thread 問題 RRS feed

  • 問題

  • 請問各位大大

    執行完執行緒後,如何釋放執行緒所暫用的記憶體空間??

            麻煩大大幫我解答一下,感激不盡 ^_^

    • 已移動 璉璉Moderator 2009年11月14日 上午 05:50 (從:Visual Studio一般討論區(General))
    2006年8月22日 下午 03:58

解答

  • 這樣整個看下來 ...

    你應該要在執行緒終止時再呼叫 GC.Collect()
    不過通常是會自動回收才對 ...

    2006年9月30日 上午 12:18
    版主

所有回覆

  • 例如 :

      有 Form1 (封面頁)與 Form2(執行頁) 的2個頁面

       Form2(執行頁) 要執行多執行緒

       但每次從 Form1 (封面頁)開啟Form2(執行頁) 後   

       每次記憶體就會增加20MB空間

       從 Form2(執行頁)執行完返回Form1 (封面頁)時

        有將Form2(執行頁) Me. Dispose

        但記憶體還是沒有釋放掉???

        執行個20次就要耗用400MB的空間

        如何才能釋放執行緒所暫用的記憶體空間

     麻煩大大們幫我解答一下,感激不盡 ^_^

    2006年8月23日 上午 12:44
  • 先確認執行緒是否都已執行完畢

    在返回Form1後呼叫 GC.Collect

    執行記憶體回收。

     

     

    2006年8月23日 上午 02:37
  • 感謝 Zion Wu 大大回答

     --[[[ 在返回Form1後呼叫 GC.Collect 執行記憶體回收。]]]---

    要寫在那裡才有效

    我寫在Form1 Load 裡

    GC.Collect

    沒有效果,記憶體還是沒有釋放掉???

    ( 在返回Form1 (封面頁)時,執行緒都已執行 MyThread.Abort() )

    再請教要如何處理???

    麻煩大大們幫我解答一下,感激不盡 ^_^ Thanks!!!!

     

     

     

    2006年8月23日 上午 03:16
  • 你是怎麼切換兩個From的?
    2006年8月23日 上午 07:11
  •  

    Dim ff2 As New Form2
             ff2.Show()
             Me.Hide()
             Me.Dispose()

    2006年8月23日 上午 09:28
  • 再請問一下,你是在執行緒裡做了什麼動作
    會讓記憶體吃到20mb
    如果可以的話...最好還是在執行緒結束時就自己回收那些記憶體

    2006年8月23日 上午 09:52
  • 執行緒沒有執行才讓記憶體吃到20mb

    有執行反而不會??

    2006年8月23日 上午 11:28
  • 聽不太懂你的意思
    不需執行的話為何要產生執行緒

    2006年8月24日 上午 07:20
  • 這樣整個看下來 ...

    你應該要在執行緒終止時再呼叫 GC.Collect()
    不過通常是會自動回收才對 ...

    2006年9月30日 上午 12:18
    版主
  • 正常來說你可以不需要手動的去即時的釋放執行緒,

    因為platform會自行釋放。

    不過若你需要手動釋放時,請確定的你的執行緒物件

    目前都已經處理死亡的狀態。再呼叫 System.gc.Collect()方法

    2006年12月17日 下午 05:21