Direi che puoi facilmente contare i processi che eseguono o caricano il CLR controllando le DLL caricate. Ma non sono sicuro di poter contare il numero di domini dell'applicazione in esecuzione. Ma non penso che questo sia il tuo obiettivo.
C'è solo un heap per processo e anche un GC, che sospende tutti i thread gestiti durante la raccolta. Quindi è possibile scorrere i processi e verificare se mscorlib è caricato, in tal caso si può presumere che sia in esecuzione un CLR .NET e un GC. Sono sicuro che ci dovrebbero essere modi migliori per determinare se un processo ha CLR ospitato, per favore controlla anche l'API CLR.
Si prega di provare il libro di Jeffrey Richter CLR via C# per avere una comprensione più approfondita.
Il seguente codice itera NET elabora
// Import these namespaces
using System.Diagnostics;
using System.ComponentModel;
// Here is the code
Process[] prcs = Process.GetProcesses();
foreach (Process prc in prcs)
{
try
{
foreach (ProcessModule pm in prc.Modules)
{
if (pm.ModuleName.Contains("mscorlib"))
{
Console.WriteLine(prc.ProcessName);
}
}
}
catch (Win32Exception exWin)
{
// Cannot detemine process modules ... some will deny access
}
}
fonte
2009-06-03 07:33:44
Cura di elaborare il downvote? – fretje
Sicuro.Non penso che l'articolo collegato faccia molto per rispondere alla domanda. Anche se mi stai facendo sentire male per il downvote, con le modifiche che hai apportato alla tua risposta. –