PDA

View Full Version : [C#] - System.Management, Errore fastidioso.


themalkavian
02-06-2008, 23:36
Ciao, volevo chiedere aiuto per un problema che mi esce fuori quando faccio uso delle ManagementClass con il System.Management Namespace. In poche parole, quando vado a richiamare la funzione per prendere i valori che mi servono, per esempio con la classe Win32_PhysicalMemory, alcuni campi causano una NullReferenceException.

Sapete come posso risolvere il problema? Nel frattempo metto anche il codice che ho usato, cosė se volete darci un occhiata per capire meglio =)

public static string memvers()
{
ManagementClass mem = new ManagementClass("Win32_PhysicalMemory");
ManagementObjectCollection coll = mem.GetInstances();
string res;
res = "";


foreach (ManagementObject obj in coll)
{
res = obj.GetPropertyValue("Version").ToString();
System.Windows.Forms.MessageBox.Show(res);
}
coll.Dispose();
mem.Dispose();
return res;
}

ciao e grazie anticipatamente!

banryu79
03-06-2008, 12:05
Suggerisco di richiamare il MessageBox solo se l'oggetto stringa del campo che chiedi non sia, appunto, una null reference, cosė (in grasseto, sintassi Java, non conosco l'equivalente in C#):

public static string memvers()
{
ManagementClass mem = new ManagementClass("Win32_PhysicalMemory");
ManagementObjectCollection coll = mem.GetInstances();
string res;
res = "";


foreach (ManagementObject obj in coll)
{
res = obj.GetPropertyValue("Version").ToString();
if (res != null)
{
System.Windows.Forms.MessageBox.Show(res);
}
}
coll.Dispose();
mem.Dispose();
return res;
}

Se invece a essere null fosse la reference ad un ManagementObject potresti comunque usare lo stesso approccio, dipende sempre da quello che vuoi ottenere.

Ciao :)