WeakReference作为方法参数

时间:2018-04-02 15:41:41

标签: c# .net wpf reference garbage-collection

我对WeakReference有疑问。

我将WPF App作为TCP客户端并使用WeakReference将窗口实例传递给“客户端逻辑”(如果窗口在请求运行时关闭,则避免内存泄漏)。 我有一个窗口和2个方法实现(1)和(2):

//Window
public partial class MainWindow : Window, IAnswerListener 
{
    //code here
    private void On_Click(object sender, RoutedEventArgs e)
    {
        //(2) // Request(new WeakReference<IAnswerListener>(this))
        // or 
        //(1) // Request(this)
    }
}

//class with logic
//Request method (1)
public void Request(IAnswerListener listener) 
{
    var weakRef = new WeakReference<IAnswerListener>(listener);
    NextCall(weakRef);
}

//Request method (2)
public void Request(WeakReference<IAnswerListener> listener)
{
    NextCall(listener); 
}

哪种类型的请求更好用?如果窗口关闭或GC没有参考,是否会在类型(1)的情况下留下参考?

0 个答案:

没有答案