2014-07-25 17 views
0

我開發了一個在Windows上運行的應用程序。它使用5分鐘的定時器來啓動到Web服務的連接,並檢查DataTable中的任何更新。切換用戶後進程內存增加

如果有任何更改 - 它彈出客戶端上的WPF窗口並顯示一條消息。

該程序使用登錄腳本在我們的域中運行,並與用戶帳戶一起運行。

最近我們注意到一個問題,並且發現了應用程序的過程中使用了RAM的2GB他們,並增加...

尋找它後,我們想通了這個問題:

該應用程序運行在Windows XP和Windows 7個。 在Windows 7中,如果用戶使用「切換用戶」選項,第一個用戶的進程將繼續運行,並且5分鐘計時器仍在運行。發生更改時會發生內存泄漏,並且應該顯示一條消息

當我們停止計時器,然後使用「切換用戶」 - 沒有問題,並且進程保持正常的內存使用情況。

我們該怎麼辦?有什麼建議麼?

謝謝!

回答

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的引用

+0

完成這項工作。謝謝。 –