2009-02-13 42 views
1

如果我們從視覺和邏輯樹中刪除TextBox,這條線是否會泄漏? 對我來說這個漏洞是因爲Mouse.MouseDownmyHandler上有一個參考,並且沒有任何操作去除處理程序。在WPF中,這條線是否泄漏?

<TextBox Mouse.MouseDown="myHandler" /> 

我不確定,因爲這段代碼是常見的做法。

+0

您可以隨時嘗試獲取內存分析器(例如,Redgate的ANTS)並使用此事件訂閱測試小型項目。你應該能夠看到TextBox是否被釋放。 – 2009-02-13 12:52:57

回答

2

它泄漏嗎?這XAML直接轉化爲下面的代碼(見obj的目錄中生成的文件Window1.g.cs)

((System.Windows.Controls.TextBlock)(target)).AddHandler(System.Windows.Input.Mouse.MouseDownEvent, new System.Windows.Input.MouseButtonEventHandler(this.TextBlock_MouseDown)); 

那麼,什麼是實際發生的是,我們將在我的情況下的「此」(參考一個Window1的實例)到TextBlock。您在XAML中看到的語法實際上是爲路由事件或附加事件附加RoutedEvent處理程序的語法。只是碰巧語法使得它看起來像是在分配一些引用。看看這個:Routed Events OverviewAttached Events Overview

編輯:總之,它不泄漏。 :)

編輯2:如果您有任何對TextBlock的引用,這將泄漏。但是,如果當你切換出TextBlock時,你確保沒有更多的元素引用,你會沒事的。

+0

好吧,這意味着沒有泄漏。感謝您的回答 ! – 2009-02-13 13:26:13