Assegnazione affinitymask in c#

domenica 21 giugno 2015 - 11.49
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  SQL Server Express

jackk87 Profilo | Junior Member

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:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

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
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5