看板 C_Sharp 關於我們 聯絡資訊
透過contentcontrol 的datatemplate datatype 綁定自動生成control時,因為會平凡切換 control 但每次切換control都會使用大量記憶體,發現切換control的時候記憶體不會自動被GC回收 ,因為control內部訂閱著外部事件,所以一定要control內部呼叫類似dispose的函式才會解 除訂閱 但是我是透過datatemplate datatype綁定自動生成該control的,在viemodel並沒有該cont rol的實例,而且MVVM應該也不太準許在vm出現view的實例,這時候我要怎麼在切換的時候去 呼叫該control的dispose函式呢? 不然每次切換都是自動生成一個新的control並佔用大量記憶體,只要多切換幾次記憶體就爆 了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.52.39.156 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1648869968.A.841.html
testPtt: 訂閱要有地方解除 通常leak都是訂閱造成 04/02 12:29
testPtt: 你可以在不用的時候set一個屬性通知解除訂閱 04/02 12:35
z79263578: 我自己想到的方法也是用一個附加屬性去通知解除訂閱 04/03 16:12
z79263578: 可是想知道像這種使用綁定去自動生成的例子有沒有其他 04/03 16:14
z79263578: 事件或方法去處理? 04/03 16:14
z79263578: 因為是由wpf幫我們生成的control 04/03 16:14
testPtt: 如果你是不用就丟的東西可以用WeakReference 04/04 08:31