Buongiorno a tutti,
dalla mia applicazione ne lancio un'altra esterna dopodichè gli vorrei assegnare l'affinità al massimo cioè con tutti i core disponibili.
con questo codice mi calcolo i core massimi disponibili sul pc:
Con questa funzione mi calcolo l'affinità in binario e la converto in esadecimale:
private int AffinityMask()
{
string binario="";
if (cbCore.CheckState == CheckState.Checked)
{
for (int i = 0; i < CaricamentoCore(); i++)
{
binario = binario + "1";
}
string AffinityString = Convert.ToString(Convert.ToInt32(binario, 2), 16);
int AffinityHex = Convert.ToInt32(AffinityString);
return AffinityHex;
}
return 0;
}
Con questo codice cerco il processo in memoria e gli assegno l'affinità massima.
Process[] lst = Process.GetProcessesByName("notepad");
foreach (Process p in lst)
{
MioProcessoAffinity = p;
}
MioProcessoAffinity.ProcessorAffinity = (System.IntPtr)AffinityMask();
Adesso fin quanto si tratta di pochi core l'applicazione funziona correttamente mentre su un pc con 8 core l'affinità massima in esadecimale è "FF", di conseguenza su questa istruzione -> MioProcessoAffinity.ProcessorAffinity = (System.IntPtr)AffinityMask(); ricevo un errore che non è un numero in formato corretto. Mettendo manualmente questo formato 0xFF funziona correttamente.
La mia domanda è come faccio ad inserire avanti al mio calcolo automatico dell'affinità questo 0x?
Grazie in anticipo a tutti 
Ho risolto basta convertire in base decimale funziona ugualmente