2010-12-08 7 views
1

Eh bien, je suis en train de déployer mon premier jeu Xbox 360 XNA qui utilise multithreading, et je suis en train de mettre un fil sur un autre thread matériel en utilisant la fonction Thread.CurrentThread.SetProcessorAffinity(), comme ceci:SetProcessorAffinity me donner des problèmes

#if XBOX360 

     Thread.CurrentThread.SetProcessorAffinity(new int[] { xbox360UpdateThread }); 
     Thread.CurrentThread.IsBackground = true; 
#endif 

J'ai aussi essayé:

#if XBOX 

     Thread.CurrentThread.SetProcessorAffinity(new int[] { xbox360UpdateThread }); 
     Thread.CurrentThread.IsBackground = true; 
#endif 

le compilateur me donne problème avec les crochets quelque part dans la première instruction ci-dessus .. dans VS2008, tous les supports sont soulignés avec ces marqueurs rouges et je reçois les éléments suivants erreurs:

error CS1519: Invalid token '(' in class, struct, or interface member declaration 
error CS1519: Invalid token '{' in class, struct, or interface member declaration 
error CS1519: Invalid token '}' in class, struct, or interface member declaration 
error CS0116: A namespace does not directly contain members such as fields or methods 

si je cache toute directive de filetage ci-dessus, et je compiler et exécuter mon jeu sur la Xbox 360 .. Seule cette directive filetage est à l'origine d'un problème ..

Quelqu'un sait ce que je fais mal ? J'utilise XNA 3.1, pas 4.0 ..

+1

Où allez-vous mettre ce code? À partir des erreurs que vous obtenez, il semble que vous l'ayez dans une déclaration d'espace de noms ou de classe, elle doit être placée dans un corps de méthode. –

+0

Où ces lignes sont-elles placées? Dans une méthode ou juste à l'intérieur d'une classe? –

+0

Got it .. Mon erreur .. Je pensais que je l'ai mis dans la fonction de mise à jour: P .. Merci, cela le corriger! – Ahmad

Répondre

2

je ferais ce qui suit:

#if XBOX360 
    // We can not use threads 0 or 2 
    int[] xbox360UpdateThread = new int[] { 4 }; 
    Thread.CurrentThread.SetProcessorAffinity(xbox360UpdateThread); 
    Thread.CurrentThread.IsBackground = true; 
#endif 
Questions connexes