У меня есть программа, которая регулярно запускает другой процесс с функцией Process.Start()
.
Через несколько часов я могу обнаружить утечку памяти с помощью монитора ресурсов Windows.Я вижу тонны ручек, набранных "Key"
на:
"\ REGISTRY \ MACHINE \ SOFTWARE \ Classes.exe"
"\ REGISTRY \ MACHINE \ SOFTWARE \ Classes \ exefile"
" \ REGISTRY \ MACHINE \ SOFTWARE \ Classes \ exefile \ shell \ open "
вот мой код: мой код действительно прост:
Process streamerProcess = new Process();
streamerProcess.StartInfo.FileName = SEStreamRequester.StreamerPath;
streamerProcess.StartInfo.Arguments = parameters;
try {
streamerProcess.Start();
m_streamerPid = streamerProcess.Id;
}
catch(Exception e) {
m_streamerPid = 0;
throw new System.ComponentModel.Win32Exception(
string.Format("Error while start streamer:{0}", e.Message)
, e
);
}
finally {
streamerProcess.Dispose();
}
где parameters
и SEStreamRequester.StreamerPath
- строки
Я искал в своем коде, правильно ли я разместил все экземпляры Process, и я так думаю.Как вы подтверждаете, что эти дескрипторы используются экземпляром процесса?Как я могу найти, откуда течет?
Спасибо.