Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

AxAcroPDF e TaskManaget

9 views
Skip to first unread message

tott...@gmail.com

unread,
Apr 1, 2014, 2:39:42 AM4/1/14
to
Buongiorno a tutti, ho il problema di liberare risorse. Mi spiego:
in una finestra ho inserito il componente in oggetto, che fa avviare un processo di Acrobat.
Alla chiusura della finestra però, non viene chiusa l'istanza di Adobe.
Nei metodi dell'oggetto, non ci sono metodi tipo Close(). Ho provato con GB.Collect() (avviato dal button di chiusura della finestra) ma senza risultati.

A complicare ulteriormente la questione, dal TaskManager delle mia macchina vedo che il processo avviato è Acrobat.exe (ho installato Acrobat Pro) mentre su altra macchina con installato il Reader, il processo avviato si chiama AcroRd32.exe .

Qualcuno ha qualche suggerimento ? Tipo intercettare quella istanza del processo (nel caso di altro identico processo avviato x altri scopi) ed ucciderla ?

Grazie,
Alessio

tott...@gmail.com

unread,
Apr 1, 2014, 4:30:06 AM4/1/14
to
Soluzione:

private void buttonUscita_Click(object sender, EventArgs e)
{
KillAllChildProcesses();
this.Close();
}

public List<Process> GetChildProcesses(int parentId)
{
List<Process> result = new List<Process>();

ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select ProcessId From Win32_Process Where ParentProcessId = " + parentId);
ManagementObjectCollection processList = searcher.Get();
foreach (var item in processList)
result.Add(Process.GetProcessById(Convert.ToInt32(item.GetPropertyValue("ProcessId"))));
return result;
}

private void KillAllChildProcesses()
{
foreach (Process childProc in GetChildProcesses(Process.GetCurrentProcess().Id))
childProc.Kill();
}
0 new messages