我正在用C#寫Silverlight中的一個軟件。GC.Collect()會在什麼情況下清除對象?
我知道GC.Collect會收集對象和控件,如果它們是未引用的,但我不確定非引用是什麼意思。
我知道,在Silverlight中,我必須從佈局中刪除控件(稱爲「控件A」),取出所有事件處理程序,然後將該對象設置爲空,以便它不引用該對象。例如:
1)如果「控件A」包含其他控件:「控件B」,「控件C」,並且它們可能在某處具有下標事件處理程序。
GC.Collect()還會收集「對照A」嗎?那麼「控制B」「控制C」如何?
我是否必須從「控件A」中實際刪除包含「控件B」和「控件C」以及從「控件A」中刪除「控件B」「控件C」的所有內容以使其收集?
2)說是否有一個「控制D」繼續ComboBox,並且ComboBox有很多ComboxBoxItem。
我必須清除()出所有的ComboxBoxItem,以便這些ComboxBoxItem將被收集?
或者當我從「控件D」中刪除組合框時,也將取出ComboxBoxItem?
我種在C刪除的困惑++,因爲在C++中我可以刪除整個對象及其包含的一切......
有很多情況下你必須自己調用'GC.Collect();'。 – Nate 2010-09-14 16:23:24
這與Silverlight或C#無關,所以我更改了標籤。 – 2010-09-14 16:33:05