切换用户后进程内存增加

时间:2014-07-25 07:15:52

标签: wpf wcf memory windows-7

我开发了一款在Windows上运行的应用。它使用5分钟的计时器来启动与Web服务的连接,并检查DataTable中的任何更新。

如果有任何更改 - 它会弹出客户端上的WPF窗口并显示一条消息。

该程序使用登录脚本在我们的域中运行,并使用用户帐户运行。

最近我们注意到了一个问题,并发现应用程序的过程中使用了超过2GB的内存,并且还在增加......

在查找之后,我们发现了问题:

该应用程序在Windows XP和Windows 7上运行。 在Windows 7中,如果用户使用"切换用户"选项,第一个用户的进程继续运行,5分钟计时器仍在运行。当发生变化时,内存泄漏就会发生,并且应该显示一条消息

当我们停止计时器,然后使用"切换用户" - 没有问题,并且该过程保持正常的内存使用。

我们能做什么?有什么建议?

谢谢!

1 个答案:

答案 0 :(得分:0)

我使用以下方法枚举当前用户。

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
        ManagementObjectCollection collection = searcher.Get();

        foreach (var user in collection.Cast<ManagementBaseObject>())
        {
            Console.WriteLine(user["UserName"]);
        }

如果您使用此功能并与之比较,它可能适用于您的应用

System.Security.Principal.WindowsIdentity.GetCurrent().Name

如果不匹配 - 暂停实例。

如果您有内存泄漏,则表明您的方法中也存在丢失的情况。如果您最终有足够的实例来支持2GB内存分配,我会感到惊讶。

P.S - 要求您添加对System.Management的引用