调用导致内存泄漏

时间:2013-11-05 15:47:37

标签: .net multithreading winforms memory-leaks

首先,后台,我正在尝试在System.Timer触发时进行跨线程更新。由于代码的性质,在计时器上使用SynchronizatoinContext不是解决方案。我发现这种模式对于跨线程更新很方便

this.Invoke((MethodInvoker)delegate {
..lots of form update code here...
});

但是,似乎每次调用都会创建新线程,这些线程不会被垃圾回收而导致内存/线程泄漏

我搜索堆栈溢出的答案,发现有冲突的信息。某些线程(例如此BeginInvoke Memory Leak?)声称需要EndInvoke,而其他人声称不需要EndInvoke。

我的问题正是发生了什么,我该如何解决?

更新: 下面是伪代码的工作原理

 Main Form
    System.Timer -> Fires -> Calls UpdateForm() On Secondary Form

    Secondary Form

    UpdateForm()
    {
    this.Invoke((MethodInvoker)delegate {
   ..lots of form update code here for multiple controls..
    });
    }

该程序正在泄漏内存,我的假设是泄漏是由无限创建线程引起的。

0 个答案:

没有答案